「[[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#L14 接続文字列を設定する。 **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] **実行基盤系 [#u053234a] ***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でも良い。 ***UserStoreType [#y8c5ea41] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L88 -使用するユーザストアのストレージタイプを選択する。 -memの場合は、IsDebugがtrueの扱いになるので注意する。 **デバッグモード(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)。 **動作モード [#m33c67d7] ***Multi-tenant [#s67e789e] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L91 データのテナント分割と、オブジェクトのオーナーの考え方の導入。 -主に管理者アカウントが使用する管理画面の動作に影響。 -動作が大きく異なるので初期から適切な方を選択してテストする。 ***RequireUniqueEmail [#g813e54f] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L120 UserNameがEmailかどうか。 -主に、 --E-mailアドレスの確認(E-mail confirmation)の有無 ---サインアップ ---UserName変更 --外部ログイン >の動作に影響。 -動作が大きく異なるので初期から適切な方を選択してテストする。 **文面ファイル(国際化対応済) [#ac695c5c] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L113 文面ファイルのロケーションを設定する。 **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~ との兼ね合いを考慮すること。 ***パスワード [#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#L144 -2要素認証 Cookie認証チケット~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L152 ***ロックアウト [#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#L156 -[[SecurityStamp>汎用認証サイト(Multi-purpose Authentication Site)#v14a6a69]]のチェック間隔 -DBアクセスが増えるので、本番環境では、少々、長めに設定すると良い。 **Proxy [#eaae3b42] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50 主に、開発時の利用を想定している。 ***インターネット・プロシキ [#be5508d9] -Internet Proxy~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50 ***イントラネット・プロシキ [#b61e59b5] -Intranet Proxy~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L56 ***デバッグ・プロキシ [#t05871af] -Debug Proxy~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L62 **ロックダウン [#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#L158 --CanEditEmail~ E-mailアドレス編集の表示/実行の、有効(true)/無効(false) --CanEditPhone~ 電話番号編集の表示/実行の、有効(true)/無効(false) --CanEdit2FA~ 2要素認証設定の表示/実行の、有効(true)/無効(false) --CanEditUnstructuredData~ 非定型データ編集の表示/実行の、有効(true)/無効(false) --CanEditOAuth2Data~ OAuth2データ編集の表示/実行の、有効(true)/無効(false) ***[[OAuth2関連>#u005bea7]] [#iea19e2f] ***[[STS専用モード関連>#ja5926d6]] [#bae8f855] **各種外部サービスの設定 [#m101831e] ***外部ログイン [#uc4663b1] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L167 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の設定~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L101 -SMS (Twilio)の設定~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L107 ***オンライン決済サービス [#p10405d7] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L70 本番用のkeyを設定する。 **OAuth2 [#ibb02bb6] ***有効化/無効化 [#ffab7ab5] -EquipOAuthServer~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L196 汎用認証サイト(IdP)にOAuth2のSTS機能を付加する(true)/しない(false)。 ***主要プロパティ [#u416bc18] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L199 -AllowOAuthInsecureHttpEndpoints~ --HTTPを許可する(true)/しない(false)。 --なお、OAuth2は、HTTPSが推奨。 -OAuthAuthorizeEndpointCanDisplayErrors~ Authorize エンドポイントでエラーを表示する(true)/しない(false)。 -OAuthAccessTokenExpireTimeSpanFromMinutes~ Access Tokenの有効期間(分) -OAuthRefreshTokenExpireTimeSpanFromDays~ Refresh Tokenの有効期間(日) ***ServerUri(Endpoint) [#se5f4174] 各種サーバのEndpointへのUriを設定する。 -Authorization Server~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L219 --Authorizeエンドポイント --Tokenポイント -Resource Server~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L231 --/userinfoエンドポイント -Client~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L235 --Redirectエンドポイント ***JWT設定 [#k8279ce6] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L204 -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#L212 --Resource Owner Credentials Grant Typeの有効(true)/無効(false) --Client Credentials Grant Typeの有効(true)/無効(false) -Refresh Tokenの機能~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L217 -OAuth2テスト用のRedirectエンドポイント~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L240 ***client_id、client_secret [#v637e44e] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L249 -ここのclient_id、client_secretの乱数を、外部に漏洩していない値に更新する。~ 乱数は、CreateClientsIdentity.exeツールを使用して生成することができる。 -なお、 --SelfClientは、汎用認証サイトのOAuth2 AccessToken取得機能で使用している設定である。 --TestClientは、汎用認証サイトのOAuth2 テスト機能で使用している設定である。 **STS専用モード [#ja5926d6] STS専用モードで動作させるには、以下の3つの機能を全てロックダウンする。 https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L306 ***サインアップ [#d4659ddd] サインアップ処理をロックダウンする。 ***ユーザ属性編集 [#k9ddc4a9] ユーザ属性編集処理をロックダウンする。 ***ユーザ・ロール管理 [#ma315993] ユーザ・ロール管理処理をロックダウンする。