Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Multi-AuthSystem?の独自仕様部分について説明する。

Idp仕様

Idpの使用について。

概要

概ね、ASP.NET Identityに準拠。

ASP.NET Identity側の仕様については、「ASP.NET Identity」を参照。

カスタマイズポイント

ユーザアカウント

UserStore?

スキーマ

DDL

Githubをポイント予定

編集処理

パラメタ化

ASP.NET Identityや、その他、アプリケーションで使用するパラメタについて。

SecurityStamp?

<!-- SecurityStamp(検証間隔は10秒、本番は長めに設定-->
<add key="SecurityStampValidateIntervalFromSeconds" value="10" />

ユーザ名と、その検証

<!--ユーザ名検証(ユーザ名は、E-mail-->
<add key="AllowOnlyAlphanumericUserNames" value="false" />
<add key="RequireUniqueEmail" value="true" />

パスワード検証

<!--パスワード検証(8文字以上の大文字・小文字、数値、記号-->
<add key="RequiredLength" value="8" />
<add key="RequireNonLetterOrDigit" value="true" />
<add key="RequireDigit" value="true" />
<add key="RequireLowercase" value="true" />
<add key="RequireUppercase" value="true" />

ユーザ ロックアウト

<!--ユーザ ロックアウト(5 回入力ミスすると、5分ロックアウト-->
<add key="UserLockoutEnabledByDefault" value="true" />
<add key="DefaultAccountLockoutTimeSpanFromSeconds" value="300" />
<add key="MaxFailedAccessAttemptsBeforeLockout" value="5" />

二要素認証

<!-- 二要素認証(2FA:TwoFactorAuthentication)-->
<!-- 必要に応じてユーザが有効にするので初期値は false -->
<add key="TwoFactorEnabled" value="false" /> 
<!-- Cookieの有効期限は二週間 24 * 14 = 336 時間 -->
<add key="TwoFactorCookieExpiresFromHours" value="336" />

外部ログイン仕様

概要

概ね、ASP.NET Identityに準拠。

ASP.NET Identity側の仕様については、「ASP.NET Identityの外部ログイン」を参照。

カスタマイズ・ポイント

外部ログイン処理の仕様について。

外部ログイン・サービス

e-mail検証

外部ログインでサインアップ

パラメタ化

以下のように各、外部ログイン・プロバイダの

を設定できる。

<!-- 外部ログインの追加時に XSRF の防止 -->
<add key="XsrfKey" value="(サイト毎にで変更する、公開しないこと)" />
 
<!--外部ログイン(MicrosoftAccountAuthentication)-->
<add key="MicrosoftAccountAuthentication" value="true" />
<add key="MicrosoftAccountAuthenticationClientId" value="・・・" />
<add key="MicrosoftAccountAuthenticationClientSecret" value="・・・" />
 
<!--外部ログイン(GoogleAuthentication)-->
<add key="GoogleAuthentication" value="true" />
<add key="GoogleAuthenticationClientId" value="・・・" />
<add key="GoogleAuthenticationClientSecret" value="・・・" />
 
<!--外部ログイン(FacebookAuthentication)-->
<add key="FacebookAuthentication" value="true" />
<add key="FacebookAuthenticationClientId" value="・・・" />
<add key="FacebookAuthenticationClientSecret" value="・・・" />

設定値の取得方法など

クライアント識別子は、外部ログイン・サービスの管理画面から取得する。

合わせてここでRedirectエンドポイントの設定などを行う必要がある。
これは、外部ログイン・サービス毎に設定方法が異なるので注意する。

例えばマイクロソフト・アカウントでは、以下の様な設定を行う。、

https://fqdnname:nnnnn/signin-microsoft

外部ログイン・サービスによっては、httpやlocalhostをサポートしないことがある。

XsrfKey?

XsrfKey?は、XSRF = CSRFを防ぐためのstateパラメタの生成に使用される。
stateパラメタは暗号化によって生成されるので、XsrfKey?自体が露見することはない。
従って、この値としても、無作為な値を使用する必要はない。

OAuth 2.0 Server仕様

概要

概ね、ASP.NET Identityに準拠。

については、「ASP.NET IdentityによるSTS実装」を参照。

共通

Server側

Client側

Access Token

クライアント認証

ここでのクライアントとは、ユーザではなく、OAuth 2.0 のClientを指しているので注意する。

クライアント識別子

ユーザ認証

Server側

Client側

ResourceServer?のWebAPI

パラメタ化

共通設定

Server側エンドポイント

Client側エンドポイント

 <!-- Client -->
 <!-- Clientエンドポイント -->
 <add key="OAuthClientEndpointsRootURI" value="http://localhost:nnnnn/MultiPurposeAuthSite" />
 <!-- Redirectエンドポイント -->
 <!--  - test_self_code : Authorization Codeグラント種別 -->
 <add key="OAuthAuthorizationCodeGrantClient" value="/Account/OAuthAuthorizationCodeGrantClient" />
 <!--  - test_self_token : Implicitグラント種別 -->
 <add key="OAuthImplicitGrantClient" value="/Account/OAuthImplicitGrantClient" />

クライアント識別子

以下をツールを使用して生成して、登録する。

 <!-- クライアント識別子 (client_id, client_secret, redirect_uri) -->
 <add key="OAuthClientsInformation" value='
      {
        "-guid(client_id)-": {
          "client_secret": "-乱数-",
          "redirect_uri_code": "test_self_code",
          "redirect_uri_token": "test_self_token",
          "client_name": "TestUser"
        },
        "-guid(client_id)-": {
          "client_secret": "-乱数-",
          "redirect_uri_code": "http://hogehoge0/aaa",
          "redirect_uri_token": "http://hogehoge0/bbb",
          "client_name": "hogehoge0"
        },
        "-guid(client_id)-": {
          "client_secret": "-乱数-",
          "redirect_uri_code": "http://hogehoge1/aaa",
          "redirect_uri_token": "http://hogehoge1/bbb",
          "client_name": "hogehoge1"
        },
        "-guid(client_id)-": {
          "client_secret": "-乱数-",
          "redirect_uri_code": "http://hogehoge2/aaa",
          "redirect_uri_token": "http://hogehoge2/bbb",
          "client_name": "hogehoge2"

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS