「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>多用途認証サイト(Multi-purpose Authentication Site)]] *目次 [#w2d7b30d] #contents *概要 [#e294e5ec] [[多用途認証サイト(Multi-purpose Authentication Site)]]の導入前の評価を行うためのファーストステップガイド。 *(1) 前提 [#l03b3c5e] **v00-50時点の前提環境 [#jd18bf54] -Visual Studio 2015 -.NET Framework 4.6 -SQL Server (Express) (メモリストアの検証ではRDBは不要) *(2) 一式のダウンロードとセットアップ [#t1cd290e] **[Download ZIP]する。 [#yb2104e6] 以下から、[Download ZIP]する。~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/ -branchを選択してください。 -現時点では、develop branchを選択(master branchにプッシュしていない)。 -上級者は[Download ZIP]ではなく、git cloneでも可能。 **localのFileSystemに解凍する。 [#i93e5fad] どこでもイイですが、ココではCドライブ直下に解凍した前提で説明を続けます。 **一式のビルドする。 [#bf9eae4c] ***ビルド [#m54d3cb7] 以下のバッチを実行して、多用途認証サイトをビルドします。 -1_DeleteDir.bat -2_DeleteFile.bat -3_Build_Framework.bat -4_Build_Framework_Tool.bat -10_MultiPurposeAuthSite.bat ***プロキシ認証 [#xadb6705] -NuGetパッケージの復元のため、プロキシ認証を求められる場合は、~ z_Common.batファイルにプロキシ認証のCredentialを設定して下さい。 http_proxy=http://[username]:[password]@[proxy fqdn or ip address] -若しくはVisual Studioから開いてビルドして下さい。~ Visual Studioがプロキシ認証のCredential入力を要求してきます。 *(3) [[app.config>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config]]ファイルを設定する。 [#m182d19e] 以下の項目を設定する。 **Administrator(システム管理者のアカウント) [#g64dbb6e] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L93 システム管理者のアカウントを入力する(以下の要件を満たす必要がある)。 -[[ユーザ名検証(既定のユーザ名は、E-mail>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L115]] -[[パスワード検証(8文字以上の大文字・小文字、数値、記号>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L120]] **登録されるテストユーザのpassword [#b024e3a1] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L109 -[[テスト用に登録される下記テストユーザ>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Controllers/AccountController.cs#L1537]]のパスワードを入力する。 --super_tanaka@gmail.com --tanaka@gmail.com --super_sato@gmail.com --sato@gmail.com -[[前述と同様に、パスワードの要件を満たす必要がある>#zb79c716]]。 **外部ログインの追加時に XSRF の防止 [#xbe443ee] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L140 適当なランダム文字列を設定する(下記のようなサイトを使用する)。 -パスワード自動生成 (Automated Password Generator)~ http://www.graviness.com/temp/pw_creator/ **JWTの署名に使用する X.509 証明書 [#p7be90e7] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L173 -デプロイした先に合わせ証明書のパスを変更する。 -ココでは、Cドライブ直下ということなので、以下のようにパスを設定する。 --C:\MultiPurposeAuthSite\root\programs\MultiPurposeAuthSite\CreateClientsIdentity\CreateClientsIdentity_RS256.pfx --C:\MultiPurposeAuthSite\root\programs\MultiPurposeAuthSite\CreateClientsIdentity\CreateClientsIdentity_RS256.cer" *(4) 証明書をインストールする。 [#d5ddd988] 以下の位置にあるテスト用のJWT署名・検証用の証明書をインストールする。 -C:\MultiPurposeAuthSite\root\programs\MultiPurposeAuthSite\CreateClientsIdentity ** *.cer [#ddeed17e] CreateClientsIdentity_RS256.cer をダブルクリックし、~ 「信頼されたルート証明機関」にインストール ** *.pfx [#e7cc588e] CreateClientsIdentity_RS256.pfx をダブルクリックし、~ 証明書のインポートウィザードを使用してインストール(パスワードは "test") *(5) 疎通確認を行う。 [#cfedc176] -この設定状態ではメモリストアを使用しているため、デバッグを停止する度にユーザが初期化されるため注意する。 -毎回、サインアップを繰り返すのが面倒な場合は、[[テストユーザ>#b024e3a1]]のアカウントを使用すると良い。 **サインアップ [#l8905df9] ヘッダに表示されているSignupボタンを押下してサインアップ画面に遷移してサインアップを行う。 #ref(Signup.png,left,nowrap,サインアップ) **E-mail confirmation [#v3d2ab0c] E-mailアドレスの確認(E-mail confirmation)を行う。 ***確認用リンクの取得 [#c6282158] この設定状態はデバッグモードなのでVisual Studioのデバッグ画面に確認用リンクが表示される。~ ※ 本番時は、E-mailに本、確認用リンクを含んだE-mailが送信される。 #ref(E-mailConfirmation.png,left,nowrap,確認用リンクの取得) ***確認用リンクを貼り付けて実行 [#n82f6beb] 確認用リンクをブラウザのアドレスバーに貼り付けてEnter押下で以下の画面が表示される。~ 「ログインするにはここをクリックしてください。」を押下してログイン画面に遷移する。 #ref(E-mailConfirmed.png,left,nowrap,確認用リンクを貼り付けて実行) ***サインイン [#l32d262f] ログイン画面でサインインする。 #ref(Signin.png,left,nowrap,サインイン) **アカウント編集 [#n8bb6e6f] -サインインした後、ヘッダに表示されている「こんにちは[メールアドレス]さん!」をクリックし、アカウント編集を行う。 #ref(Edit.png,left,nowrap,アカウント編集) -この設定状態では、SecurityStamp機能が有効になっている。~ この場合、編集後、幾らか時間が経過した後に自動的にサインアウトするので注意する。 ***パスワードの変更 [#n4af538d] -[パスワードの変更]リンクを押下して、[パスワードの変更]画面に遷移し、パスワード変更を行う。 -この設定状態では、SecurityStamp機能が有効になっている。~ この場合、編集後、幾らか時間が経過した後に自動的にサインアウトする。 -再度サインインする際、変更後のパスワードでサインインできることを確認する。 ***電話番号の設定 [#u625914a] -[電話番号の設定]リンクを押下して、[電話番号の設定]画面に遷移し、電話番号設定を行う。 -[電話番号の設定]を行うと、電話番号の確認(TelNum confirmation)が行われる。 -この設定状態はデバッグモードなのでVisual Studioのデバッグ画面に確認コードが表示される。~ ※ 本番時は、携帯電話(スマホ)に本コードを含んだSMSが送信される。 #ref(TelNumConfirmation.png,left,nowrap,電話番号の確認コード) -確認コードを入力して実行すると以下の画面が表示される。 #ref(TelNumConfirmed.png,left,nowrap,確認コードを入力して実行した結果) -ここで、電話番号が入力できたことを確認する。 -必要に応じて、[電話番号の削除]リンクを押下して、電話番号の削除をテストする。 ***2要素認証をオンにする [#d326c1e0] -2要素認証の[有効にする]リンクを押下して、2要素認証をオンにする。 #ref(EnableTwo-FactorAuthentication.png,left,nowrap,2要素認証をオンにする) -この状態で別のブラウザ(Chrome ---> Internet Explorer)を立ち上げてログインを試みる。 -すると、以下のような画面が表示されるので、好みの通知プロバイダを選択して送信を押下する。~ (電子メールコードと電話コードから選択可能だが、電話コードは電話番号を入力しておかないと表示されない) #ref(Two-FactorAuthentication.png,left,nowrap,2要素認証) -後は、前述の[[電話番号の設定>#u625914a]]のように、確認コードが送信されるので、~ ソレを使用して2要素認証のプロセスを完了することで、別ブラウザでもサインインできるようになる。 **パスワード・リセット [#t38bfa74] -次に、パスワード・リセットを行うので、ヘッダに表示されているSignoutボタンを押下して一度サインアウトを行う。 -ヘッダに表示されているSignupボタンを押下してサインアップ画面に遷移する。 -このサインアップ画面で、「パスワードを忘れた場合。」リンクを押下する。 -すると、以下の「パスワードを忘れましか?」画面に遷移するため、~ 自分のアカウントのE-mailのアドレスを入力して送信ボタンを押下する。 #ref(PasswordReset.png,left,nowrap,パスワード・リセット) -後は、前述の[[E-mailアドレスの確認(E-mail confirmation)>#v3d2ab0c]]のように、確認用リンクが送信されるので、~ ソレを使用してパスワード・リセットのプロセスを完了させることでパスワード失念時もセルフのリカバリができる。 -パスワード・リセットのプロセスの完了後、確認のためサインインが成功することを確認する。 **アカウントのロックアウト [#ua25e61a] -次に、アカウントのロックアウトの確認を行うので、ヘッダに表示されているSignoutボタンを押下して一度サインアウトを行う。 -[[初期状態では、5回間違えると5分間>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L127]]、アカウントのロックアウトが行われる(指定の回数、サインインに失敗すると以下の画面が表示される)。 #ref(AccountLockout.png,left,nowrap,アカウントのロックアウト) -アカウントのロックアウト中はサインインが失敗することを確認し、~ 指定時間経過後にアカウントのロックアウトが解除され、サインインが成功することを確認する。 *(6) その他の機能の評価を行う。 [#ua607921] **外部ログイン [#cc814474] ***app.configファイルを設定する。 [#ab4a32b0] -InternetProxy設定 (Internet アクセス用、)~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50 >企業内から社内プロキシ経由で評価する場合に、入力する。 - https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50 > **OAuth確認 [#qa22ed5a] ***Authorization Codeグラント種別 [#d5ae3e42] ***Implicitグラント種別 [#zcb49d49] ***Resource Owner Password Credentialsグラント種別 [#m252d49c] [[こちら>多用途認証サイトの動作検証#ff1f98d1]]の手順に従ってテストを行う。 ***Client Credentialsグラント種別 [#ifed08e0] [[こちら>多用途認証サイトの動作検証#dc7b96b2]]の手順に従ってテストを行う。 **オンライン決済 [#odfd1c3c] *(7) ユーザストアをDBMSに変更するDBMS [#ga35289b] *(8) Notification Providerをテストする [#a7f373d4] **Smtp [#mfe32d98] **SMS(Twilio) [#ube2a9d4] *(9) オプションを変更してテストする [#q3ce4dc2] **UID=メアド以外 [#l6190a10] **マルチテナント [#u9534338] ***マルチテナントの場合 [#d414688a] ***マルチテナントでない場合 [#v7d301d1] *(10) OAuth2の3分割テストを行う。 [#nd26673c] 多用途認証サイトをOAuth2で登場する3つのサーバー機能に分割して動作検証をする。 -Client -Authorization Server -Resource Server *参考 [#labee1e4] -[[多用途認証サイト(Multi-purpose Authentication Site)]] -[[多用途認証サイトの動作検証]]