「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>汎用認証サイトのファーストステップガイド]] --[[汎用認証サイトのファーストステップガイド (1)]] --汎用認証サイトのファーストステップガイド (2) --[[汎用認証サイトのファーストステップガイド (3)]] --[[汎用認証サイトのファーストステップガイド (4)]] --[[汎用認証サイトのファーストステップガイド (5)]] *目次 [#n2ceecf2] #contents *概要 [#j82b4e07] [[汎用認証サイト(Multi-purpose Authentication Site)]]~ の導入前の評価を行うためのファーストステップガイド。 *(7) ユーザストアをメモリストアからDBMSに変更する [#zac33f46] **SQL Serverをインストールする。 [#q8e1feb0] SQL Server(Express可能)をインストールする。 **ユーザストアを作成する。 [#n597a8dc] 以下の場所にあるSQLを実行してユーザストアを作成する。~ C:\MultiPurposeAuthSite\root\files\resource\Sql\sqlserver -Create_UserStore.sql -Select_UserStore.sql(確認用) ** *.configファイルを設定する。 [#vea8c4a3] ***接続文字列 [#c0414ee9] [[Web.configファイルのconnectionStrings セクション>汎用認証サイトのコンフィギュレーション#r1d90b3b]]にあるConnectionString_SQL~ パラメタに設定されているSQL Serverへの接続文字列を環境に合わせて変更する。 ***永続化モード [#w0b90d63] [[app.configファイルに設定されているUserStoreType>汎用認証サイトのコンフィギュレーション#y8c5ea41]] を "mem" ---> "sql" に変更する。 **永続化を確認する。 [#u54d55f5] 上記の設定が完了したら疎通確認として、~ サインアップ・サインイン・サインアウトを行う。 メモリストアと異なり、SQL Serverのモードでは、~ サインアップしたアカウント情報が永続化されるため、~ デバッグを停止してもアカウント情報が残ることを確認する。 *(8) Internet アクセス用のInternetProxyを設定する。 [#kfd3c5fb] 企業内から社内プロキシ経由で評価する場合に、~ Internetアクセス用のInternetProxyを設定する。 ** app.configファイルを設定する。 [#leb01720] [[app.configファイルに設定されている各種プロキシの設定>汎用認証サイトのコンフィギュレーション#eaae3b42]] を変更する。 -UseInternetProxy : true -InternetProxyURL : InternetProxyへのurlを入力 -Proxy credential --InternetProxyUID : InternetProxy認証のユーザID --InternetProxyPWD : InternetProxy認証のパスワード **InternetProxyを使用する機能。 [#s5bebf77] -[[外部ログイン>#jdc4943e]] -[[オンライン決済>#y0c8eb4e]] -[[Notification Provider - SMS(Twilio)>#k68177c5]] *(9) アカウント(ユーザ・ロール)の管理 [#f0c1d26f] -アカウント(ユーザ・ロール)の管理画面でユーザ・ロールの管理が可能。 -アカウント(ユーザ・ロール)の管理画面には、権限のあるアカウントでアクセスする必要がある。 --[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]がONの場合、 ---システム管理者アカウント ---テナント管理者アカウント(サインアップしたアカウント) --[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]がOFFの場合、 ---システム管理者アカウント #ref(Administration.png,left,nowrap,管理画面への遷移) **ユーザ管理画面 [#c92e02df] -ユーザ管理画面では以下のようなユーザのCRUD操作が可能である。 -なお、E-mailアドレスの作成・変更の際のE-mailアドレスの確認(E-mail confirmation)は行われない。 ***一覧 [#j83c25a7] -一覧には、*.configに指定した件数までしか表示されない。 -条件検索は、UserNameフィールドに対して中間一致のLike検索が行われる。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、所有権のあるユーザのみ一覧表示可能。 ---システム管理者アカウントは、全ユーザの一覧表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ユーザの一覧表示が可能。 -ユーザ管理 一覧画面のイメージ > #ref(UserAdministration.png,left,nowrap,ユーザ管理画面 一覧) ***作成 [#u8b7aa46] -[新規作成]ボタンで遷移する。 -オーナーは作成したユーザアカウントになる~ (オーナーが作成したアカウントの所有権を持つ)。 -以下のロールのみ設定可能。 --自分が属するグローバル ロール --自分が所有するロール(所有していれば属する必要はない) -ユーザ管理 作成画面のイメージ > #ref(UserAdministrationCreate.png,left,nowrap,ユーザ管理画面 作成) ***詳細 [#ge14929c] -[ユーザーの詳細]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、所有権のあるユーザのみ詳細表示可能。 ---システム管理者アカウントは、全ユーザの詳細表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ユーザの詳細表示が可能。 -ユーザ管理 詳細画面のイメージ > #ref(UserAdministrationReference.png,left,nowrap,ユーザ管理画面 詳細) ***編集 [#r3bf781e] -[ユーザーの編集]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、所有権のあるユーザのみ編集表示可能。 ---システム管理者アカウントは、全ユーザの編集表示が可能。 ---なお、システム管理者アカウント、テナント管理者アカウントは編集不可能。~ --OFFの場合、 ---(システム管理者アカウントは、)全ユーザの編集表示が可能。 ---なお、システム管理者アカウントは編集不可能。 -以下のロールのみ設定可能。 --自分が属するグローバル ロール --自分が所有するロール(所有していれば属する必要はない) -ユーザ管理 編集画面のイメージ > #ref(UserAdministrationUpdate.png,left,nowrap,ユーザ管理画面 編集) ***削除 [#o7438645] -[ユーザーの削除]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、所有権のあるユーザのみ削除表示可能。 ---システム管理者アカウントは、全ユーザの削除表示が可能。 ---なお、システム管理者アカウント、テナント管理者アカウントは削除不可能。~ --OFFの場合、 ---(システム管理者アカウントは、)全ユーザの削除表示が可能。 ---なお、システム管理者アカウントは削除不可能。 -ユーザ管理 削除画面のイメージ > #ref(UserAdministrationDelete.png,left,nowrap,ユーザ管理画面 削除) **ロール管理画面 [#t607e661] ロール管理画面では以下のようなユーザのCRUD操作が可能である。 ***一覧 [#uc041267] -一覧には、*.configに指定した件数までしか表示されない。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、グローバル ロールと、自分が属するテナントが所有するロールのみ一覧表示可能。 ---システム管理者アカウントは、全ロールの一覧表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ロールの一覧表示が可能。 -ロール管理 一覧画面のイメージ > #ref(RoleAdministration.png,left,nowrap,ロール管理画面 一覧) ***作成 [#u8b7aa46] -[新規作成]ボタンで遷移する。 -オーナーは作成したユーザアカウントになる~ (オーナーが作成したロールの所有権を持つ)。 -ロール管理 作成画面のイメージ > #ref(RoleAdministrationCreate.png,left,nowrap,ロール管理画面 作成) ***詳細 [#ge14929c] -[ロールの詳細]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、自分が属するテナントが所有するロールのみ詳細表示可能(グローバル ロールは詳細表示不可能)。 ---システム管理者アカウントは、全ロールの詳細表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ロールの詳細表示が可能。 -ロール管理 詳細画面のイメージ > #ref(RoleAdministrationReference.png,left,nowrap,ロール管理画面 詳細) ***編集 [#r3bf781e] -[ロールの編集]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、自分が属するテナントが所有するロールのみ編集表示可能(グローバル ロールは編集表示不可能)。 ---システム管理者アカウントは、全ロールの編集表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ロールの編集表示が可能。 ---(ただし、システム管理者アカウントでも、)グローバル ロールの編集は不可能。 -ロール管理 編集画面のイメージ > #ref(RoleAdministrationUpdate.png,left,nowrap,ロール管理画面 編集) ***削除 [#o7438645] -[ロールの削除]ボタンで遷移する。 -[[マルチテナント・モード>汎用認証サイトのコンフィギュレーション#s67e789e]]が、 --ONの場合、 ---テナント管理者アカウントは、自分が属するテナントが所有するロールのみ削除表示可能(グローバル ロールは削除表示不可能)。 ---システム管理者アカウントは、全ロールの削除表示が可能。 --OFFの場合、 ---(システム管理者アカウントは、)全ロールの削除表示が可能。 ---(ただし、システム管理者アカウントでも、)グローバル ロールの削除は不可能。 -ロール管理 削除画面のイメージ > #ref(RoleAdministrationDelete.png,left,nowrap,ロール管理画面 削除) *(10) 外部ログイン [#jdc4943e] -インターネット接続に問題がなければ、以下の設定で外部ログインが可能になる。 -企業内からテストをする場合は、 --[[社内プロキシ(Internet アクセス用のInternetProxy)の設定>#kfd3c5fb]]を行う。 --また、社内プロキシにフィルタリング機能がある場合、フィルタ解除の申請などが必要になることもある。 **app.configファイルを設定する。 [#fcfa7614] [[app.configファイルに設定されている各種外部ログイン・サービスの設定>汎用認証サイトのコンフィギュレーション#uc4663b1]] を変更する。 ***Microsoft [#d41dd6ec] -MicrosoftAccountAuthentication : true -以下の値は、[[ココ>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3#j12cae65]]を参考にして取得する。 --xxxxx ClientId : xxxx --xxxxx ClientSecret : xxxx -MicrosoftAccount側にエンドポイントの設定などを行う。 ***Google [#k596ace6] -GoogleAuthentication : true -以下の値は、[[ココ>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3#n8dd8918]]を参考にして取得する。 --xxxxx ClientId : xxxx --xxxxx ClientSecret : xxxx -Google側にエンドポイントの設定などを行う。 ***Facebook [#ke7e5bfe] -FacebookAuthentication : true -以下の値は、[[ココ>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3#lce246f9]]を参考にして取得する。 --xxxxx ClientId : xxxx --xxxxx ClientSecret : xxxx -Facebook側にエンドポイントの設定などを行う。 ※ 3.0.1のライブラリが動作しなくなっている模様、3.1.0にアップデートする必要がある。~ http://stackoverflow.com/questions/22364442/asp-net-mvc5-owin-facebook-authentication-suddenly-not-working **外部ログインをテストする。 [#e853f82c] ***サインアップ or ログイン画面に遷移する。 [#l55ec0e9] サインアップ or ログイン画面に遷移すると、以下のように、~ ソーシャルログイン部分ビューに外部ログインのボタンを確認できる。 #ref(ExternalLogin1.png,left,nowrap,外部ログイン1) ***外部のIdpにサインアップする。 [#n80372df] 以下は、[Microsoft]ボタンを選択し、マイクロソフトアカウントにサインアップするところ。 #ref(ExternalLogin2.png,left,nowrap,外部ログイン2) ***サインインを確認する。 [#lc3c3b1d] サインイン後、[[アカウント編集>汎用認証サイトのファーストステップガイド (1)#f41ac715]]などができることを確認する。 #ref(ExternalLogin3.png,left,nowrap,外部ログイン3) ***その他のテストケースを確認する。 [#c18e953e] 外部ログインには、その他、[[色々なテストケース>汎用認証サイトの動作検証#x929aa7a]]がある。~ 必要に応じて、[[これらのテストケース>汎用認証サイトの動作検証#x929aa7a]]を消化して動作確認を行う。 -ローカル・ログインを追加する。 -当該 外部ログイン無し状態で外部ログイン。~ ローカル・ログインが有り、外部ログインが無い状態で、新規の外部ログインを行う。 -当該 外部ログイン有り状態で外部ログイン。~ ローカル・ログインが有り、外部ログインも有る状態で、追加の外部ログインを行う。 *(11) オンライン決済 [#y0c8eb4e] -インターネット接続に問題がなければ、以下の設定でオンライン決済が可能になる。 -企業内からテストをする場合は、 --[[社内プロキシ(Internet アクセス用のInternetProxy)の設定>#kfd3c5fb]]を行う。 --また、社内プロキシにフィルタリング機能がある場合、フィルタ解除の申請などが必要になることもある。 -なお、オンライン決済の設定は --[[Stripe>#a3f14db3]]か --[[PAY.JP>#a3f14db3]]の >どちらか一方を設定する。 **Stripe [#a3f14db3] ***サインアップ・ログインを行う。 [#d2604592] Stripeへのサインアップ・ログインを行う。 https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Stripe#x4c2914d ***秘密鍵と公開鍵を取得する。 [#h0c4ccf0] テスト・モードの秘密鍵と公開鍵を取得する。 https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Stripe#md7319a7 ***app.configファイルを設定する。 [#o604eeee] [[app.configファイルに設定されている各種オンライン決済サービスの設定>汎用認証サイトのコンフィギュレーション#p10405d7]] を変更する。 -EnableStripe : true -Stripe_PK : (テスト環境の)公開鍵を設定 -Stripe_SK : (テスト環境の)秘密鍵を設定 **PAY.JP [#y81ab713] ***サインアップ・ログインを行う。 [#r5c210bb] PAY.JPへのサインアップ・ログインを行う。 https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PAY.JP#r2ac8044 ***秘密鍵と公開鍵を取得する。 [#o4df7224] テスト・モードの秘密鍵と公開鍵を取得する。 https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PAY.JP#k4b617b8 ***app.configファイルを設定する。 [#wa728842] [[app.configファイルに設定されている各種オンライン決済サービスの設定>汎用認証サイトのコンフィギュレーション#p10405d7]] を変更する。 -EnablePAYJP : true -PAYJP_PK : (テスト環境の)公開鍵を設定 -PAYJP_SK : (テスト環境の)秘密鍵を設定 **オンライン決済をテストする。 [#h5e65159] ***アカウント編集画面に遷移する。 [#tbd6c6d2] [支払元情報の設定]リンクを押下する。 #ref(OnlinePayment1.png,left,nowrap,オンライン決済1) ***テスト用カード情報を入力する。 [#n6d334d2] テスト用カード情報を入力して、[送信]ボタンを押下する #ref(OnlinePayment2.png,left,nowrap,オンライン決済2) ***テスト用の課金処理を行う。 [#za5f6e20] アカウント編集画面に遷移するので、[課金する]リンクを押下する。 #ref(OnlinePayment3.png,left,nowrap,オンライン決済3) ***ダッシュボードで課金を確認する。 [#ee1644b9] オンライン決済サービスにサインインし、ダッシュボード(テストモード)で課金を確認する。 #ref(OnlinePayment4.png,left,nowrap,オンライン決済4,60%) *(12) Notification Providerをテストする。 [#qcde93fc] 各Notification Providerにアクセス可能な環境でテストを行うこと。 **本番設定に変更する。 [#a22cb0cf] -通知処理を行う場合に、 --Visual Studioのデバッグ画面ではなく、 --Notification Providerを使用する場合、 >app.confgiの設定を本番設定に変更する必要がある。 -app.confgiの下記の設定を変更し、本番用の設定にする。 --[[IsDebug : false>汎用認証サイトのコンフィギュレーション#v443d7eb]] --[[UserStoreType : mem以外>汎用認証サイトのコンフィギュレーション#y8c5ea41]] **Smtp [#g4bf7146] [[以下のSMTP設定を行う>汎用認証サイトのコンフィギュレーション#f546ce4b]]。 --SmtpHostName --SmtpPortNo --SmtpSSL --SmtpAccountUID --SmtpAccountPWD ***gmail [#t58a14f0] -以下は、smtp.gmail.comを使用する場合の設定例。 --SmtpHostName : smtp.gmail.com --SmtpPortNo : 587 --SmtpSSL : true --SmtpAccountUID : xxxx@gmail.com --SmtpAccountPWD : xxxxxxxxxxxxxx ***余談(gmail) [#uc055c84] -なお、認証エラー時は、[安全性の低いアプリの許可]を[有効]にする。 --Tech TIPS:メーラーからGmailへの接続時に~ 認証(パスワード)のエラーが生じる場合の対処方法 (1/2) - @IT~ http://www.atmarkit.co.jp/ait/articles/1409/03/news109.html -新しい、SMTPクライアントがリリースされた模様。 --MailKitが公式に.NETのSmtpClientを置き換えることを明らかにした。~ https://www.infoq.com/jp/news/2017/04/MailKit-MimeKit-Official --NuGet Gallery | MailKit~ https://www.nuget.org/packages/MailKit/ **SMS(Twilio) [#k68177c5] ***サインインしアカウント情報を取得 [#r027aa7a] -https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?SMS%E9%80%81%E4%BF%A1#refba7b9~ 上記を参考にして、以下の3つの情報を取得する。 --Twilio電話番号 --SID --Token ***以下のSMS(Twilio)設定を行う。 [#w5abc7a6] -[[以下の3つのパラメタを設定する。>汎用認証サイトのコンフィギュレーション#f546ce4b]] --TwilioAccountSid : xxxxxxxxxx --TwilioAuthToken : xxxxxxxxxx --TwilioFromPhoneNumber : xxxxxxxxxx **Notification Providerの動作を確認する。 [#k085de39] -サインアップ(E-mail confirmation)→電話番号登録などで、~ SMTPとSMSのNotification Providerの動作を確認する。 -なお、SMS(Twilio)の電話番号は、日本の国コードである+81~ から始まる「国際電話の電話番号」として入力する必要がある。 #ref(SMS(Twilio).png,left,nowrap,SMS(Twilio)の電話番号)