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

目次

概要

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

Idp仕様

Idpの使用について。

概要

概ね、ASP.NET Identityに準拠。

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

カスタマイズポイント

ユーザアカウント

UserStore?

スキーマ

DDL

編集処理

パラメタ化

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への情報格納方法

ClaimsIdentity?を使用する。以下のようなURN形式をkeyに使用してvalueの追加を行う。

クライアント認証

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

クライアント識別子

ユーザ認証

Server側

Client側

ResourceServer?のWebAPI

パラメタ化

共通設定

<add key="EquipOAuthServer" value="true" />
<add key="OAuthIssuerId" value="IssuerId:サイト毎にGUIDの32文字を生成して設定" />
<add key="AllowOAuthInsecureHttpEndpoints" value="true" />
<add key="OAuthAuthorizeEndpointCanDisplayErrors" value="true" />
<add key="OAuthAccessTokenExpireTimeSpanFromMinutes" value="360" />

Server側エンドポイント

Multi-AuthSystem?が保有するServer側エンドポイントなので、相対パスで良い。

<!-- 認可エンドポイント -->
<add key="OAuthAuthorizeEndpoint" value="/Account/OAuthAuthorize" />
<!-- Tokenエンドポイント -->
<add key="OAuthBearerTokenEndpoint" value="/OAuthBearerToken" />
<!-- ResourceServerエンドポイント -->
<add key="OAuthAuthenticateAPI" value="/api/OAuthResourceApi/Authenticate" />
<add key="OAuthAuthorizedUserClaimAPI" value="/api/OAuthResourceApi/GetAuthorizedUserClaim" />

Client側エンドポイント

Client側エンドポイントだが、Multi-AuthSystem?が保有するテスト用セルフRedirectエンドポイントなので、相対パスで良い。

<!-- テスト用セルフ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='
      {
        "client_idとしてサイト毎にGUIDの32文字を生成して設定": {
          "client_secret": "client_secretとしてサイト毎にGUIDの32文字を生成して設定",
          "redirect_uri_code": "test_self_code",
          "redirect_uri_token": "test_self_token",
          "client_name": "TestUser"
        },
        "client_idとしてサイト毎にGUIDの32文字を生成して設定": {
          "client_secret": "client_secretとしてサイト毎にGUIDの32文字を生成して設定",
          "redirect_uri_code": "http://hogehoge0/aaa",
          "redirect_uri_token": "http://hogehoge0/bbb",
          "client_name": "hogehoge0"
        },
        ・・・
      }
  ' />

テスト用セルフRedirectエンドポイント

test_self_code

test_self_token


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