「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>汎用認証サイト(Multi-purpose Authentication Site)]] *目次 [#ud893c9c] #contents *概要 [#ab0b26ff] -[[汎用認証サイト>汎用認証サイト(Multi-purpose Authentication Site)]]のコンフィギュレーションを纏めた。 -本番稼働前にどのあたりに注意が必要か?などについても記載した。 *[[web.config>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config]] [#i3afc5aa] **connectionStrings [#r1d90b3b] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config 接続文字列を確認する。 **globalization [#c3251560] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L23 カルチャ設定を確認する。 **compilation debug [#r438ba24] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L25 デバッグ・モードを確認する。 **sessionState [#h83f5629] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L55 タイムアウト値や、クラスタリング対応など、Session設定を行う。 **customErrors [#h932ec7b] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L101 エラーが画面の表示方法の変更。offはデバッグ時設定。 *[[app.config>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config]] [#oeecf4ea] **FxLog4NetConfFile [#hb74aaac] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L25 ログ出力設定を確認する。 **FxSessionTimeOutCheck [#r0c8faf5] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L38 -Sessionのタイムアウト検出機能のON/OFFを確認する。 -企業向けビジネス・アプリケーションではON推奨だが、汎用認証サイトはOFFでも良い。 **IsDebug [#v443d7eb] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L85 -デバッグモードをOFF(false)に変更する。 -以下は、このフラグが影響を与える機能の一覧。 ***テスト・ユーザ登録 [#h8fa4979] する(true)/しない(false)。 ***デバッグ・ログ出力 [#rbc6dbec] log4net & Debug.WriteLineへの併出(true)/log4net(false) ***通知(Notification) [#d7ed4136] Debug.WriteLineへ出力(true)/Notification Providerへ出力(false) ***オンライン決済 [#j6b0915b] オンライン決済のテスト機能を表示/実行する(false)/しない(true)。 **UserStoreType [#y8c5ea41] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L88 -使用するユーザストアのストレージタイプを選択する。 -memの場合は、IsDebugがtrueの扱いになるので注意する。 **Multi-tenant [#s67e789e] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L91 動作が大きく異なるので初期から適切な方を選択してテストする。 **AdministratorUID/PWD [#f07a2ca9] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L97 -システム管理者のアカウントを入力する。 -パスワード(AdministratorPWD)は稼働後(DB登録後)、削除して問題ない。 **サインアップ、サインイン・サインアウト [#z0487ecc] ***ユーザ名 [#oc6b5a08] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L118 -AllowOnlyAlphanumericUserNames~ UserNameが英字と数字のみかどうか。 -RequireUniqueEmail~ UserNameがEmailかどうか。 ***パスワード [#pca79851] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L131 -RequiredLength~ 必要な文字列長(最小の文字列長) -RequireNonLetterOrDigit~ 英数以外の文字を必要とするかしないか。 -RequireDigit~ 数字を必要とするかしないか。 -RequireLowercase~ 小文字を必要とするかしないか。 -RequireUppercase~ 大文字を必要とするかしないか。 ***サインアップ [#w95fdbe6] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L123 -DisplayAgreementScreen~ 約款画面を表示するかどうか。 -EmailConfirmationTokenLifespanFromHours~ メアド検証リンクの有効期限(時間) ***認証チケット [#b8074534] -Cookie認証チケット https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L143 -2要素認証 Cookie認証チケット https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L151 ***ロックアウト [#p523874d] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L138 サインインにおいて、n 回入力ミスすると、n 分ロックアウト的な。 ***SecurityStamp [#v4691803] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L155 -[[SecurityStamp>汎用認証サイト(Multi-purpose Authentication Site)#v14a6a69]]のチェック間隔 -DBアクセスが増えるので、本番環境では、少々、長めに設定すると良い。 **Proxy [#eaae3b42] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50 主に、開発時の利用を想定している。 ***Internet Proxy(インターネット・プロシキ) [#be5508d9] ***Intranet Proxy(イントラネット・プロシキ) [#b61e59b5] ***Debug Proxy(デバッグ・プロキシ) [#t05871af] **ロックダウン [#ca5ed913] ***編集画面 [#b233454c] -UserName~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L126 --AllowEditingUserName~ UserName編集の表示/実行を許可するかどうか --RequirePasswordInEditingUserNameAndEmail~ UserNameとEmail編集時にパスワードを要求するかどうか -その他~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L157 --CanEditEmail~ E-mailアドレス編集の表示/実行の有効(true)/無効(false) --CanEditPhone~ 電話番号編集の表示/実行の有効(true)/無効(false) --CanEdit2FA~ 2要素認証設定の表示/実行の有効(true)/無効(false) --CanEditUnstructuredData~ 非定型データ編集の表示/実行の有効(true)/無効(false) --CanEditOAuth2Data~ OAuth2データ編集の表示/実行の有効(true)/無効(false) **各種外部サービスの設定 [#m101831e] ***外部ログイン [#uc4663b1] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L166 ON/OFFのスイッチとキーを設定する。 -XsrfKey --asp.net mvc 5 - What is the XsrfKey used for and should I set the XsrfId to something else? - Stack Overflow~ http://stackoverflow.com/questions/32121504/what-is-the-xsrfkey-used-for-and-should-i-set-the-xsrfid-to-something-else >XsrfKeyは、XSRF = CSRFを防ぐためのstateパラメタの生成に使用される。~ stateパラメタは暗号化によって生成されるので、XsrfKeyが露見することはない。~ 従って、この値としても、リクエストの度に無作為な値を使用する必要はない。 -外部ログイン・サービスの管理画面 --client_id、client_secretを取得する。 --合わせてここでRedirectエンドポイントの設定を行う必要がある。 ---これは、外部ログインライブラリ毎に設定方法が異なるので注意する。 ---例えばMicrosoftアカウント + Microsoft.Owin.Security.MicrosoftAccountの場合、以下の設定を行う。 https://fqdnname:nnnnn/signin-microsoft ***Notification Provider [#f546ce4b] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L100 -SMTPの設定 -SMS (Twilio)の設定 ***文面ファイル [#ac695c5c] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L113 文面ファイルの内容を確認する。 ***オンライン決済サービス [#p10405d7] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L70 本番用のkeyを設定する。 **OAuth2 [#ibb02bb6] ***EquipOAuthServer [#ffab7ab5] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L189 汎用認証サイト(IdP)にOAuth2のSTS機能を付加する(true)/しない(false)。 ***プロパティ [#u416bc18] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L191 -AllowOAuthInsecureHttpEndpoints~ --HTTPを許可する(true)/しない(false)。 --なお、OAuth2は、HTTPSが推奨。 -OAuthAuthorizeEndpointCanDisplayErrors~ Authorize エンドポイントでエラーを表示する(true)/しない(false)。 -OAuthAccessTokenExpireTimeSpanFromMinutes~ Access Tokenの有効期間(分) -OAuthRefreshTokenExpireTimeSpanFromDays~ Refresh Tokenの有効期間(日) ***ServerUri [#se5f4174] 各種サーバのEndpointへのUriを設定する。 -Authorization Server~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L211 -Resource Server~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L223 -Client~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#229 ***JWT設定 [#k8279ce6] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L197 -EnableCustomTokenFormat --AccessTokenのフォーマットを ---JWT形式にするか(true) ---ASP.NET Identity形式にするか(false) --JWT形式を選択する意味。 ---ResourcesServerはASP.NET Identityに依存しなくて良くなる。 ---AccessToken(JWT)をJWT検証できるため、~ ClientはOAuth2の脆弱性を検知可能で、認証用途でより安全に使用可能。 -OAuthIssuerId~ iss claimに格納される、適切なIssuerId(Uri形式)を設定する。 -X.509 証明書~ 必要に応じて、本番環境にふさわしいX.509証明書に変更する。 ***ロックダウン [#u005bea7] -Grant Type~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L205 --Resource Owner Credentials Grant Typeの有効(true)/無効(false) --Client Credentials Grant Typeの有効(true)/無効(false) -OAuth2テスト用のRedirectエンドポイント~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L233 ***client_id、client_secret [#v637e44e] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L242 -ここのclient_id、client_secretの乱数を、外部に漏洩していない値に更新する。~ 乱数は、CreateClientsIdentity.exeツールを使用して生成することができる。 -なお、 --SelfClientは、汎用認証サイトのOAuth2 AccessToken取得機能で使用している設定である。 --TestClientは、汎用認証サイトのOAuth2 テスト機能で使用している設定である。