「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>汎用認証サイト(Multi-purpose Authentication Site)]] *目次 [#g19de368] #contents *概要 [#n7acd33b] -[[汎用認証サイト(Multi-purpose Authentication Site)]]の動作検証手順のメモする。 -[[汎用認証サイトのファーストステップガイド]]の手順も動作検証に利用できる。 *[[Idp動作検証>汎用認証サイトの独自仕様#f550c2de]] [#z524bb24] **[[サインアップ・サインイン>汎用認証サイトの独自仕様#oe564461]] [#q9cc845b] **[[アカウント編集画面>汎用認証サイトの独自仕様#sc966644]] [#f208cff5] **[[ユーザ・ロール管理画面>汎用認証サイトの独自仕様#teb4f351]] [#ra3d782b] *[[外部ログインの動作検証>汎用認証サイトの独自仕様#w534c815]] [#x929aa7a] **UserName=メアド [#l4e00450] 次のパターンを意識的にテストする。 ***外部ログインでサインアップする。 [#v4404c74] ローカル・ログイン無しのアカウントが作成される。 ***ローカル・ログインを追加する。 [#x65eb259] 以下の2つの手順でローカル・ログインを作成できることを確認する。 -アカウント編集が画面でパスワード設定 -パスワード・リセット ***当該メアドの外部ログイン無し状態で外部ログイン。 [#d00c07dc] ローカル・ログインでサインアップした後に、 -ローカル・ログインに外部ログインを重ねてサインインできることを確認する。 --サインアップ画面 --サインイン画面 --アカウント編集画面 -なお、アカウント編集画面の[外部ログイン]の[管理]リンクから、~ サインインされたユーザとメアドが異なる外部ログイン・アカウントで~ サインインしようとした場合、コンフリクトが発生することを確認する。 >この場合、「ソーシャルログインでアカウントが一致しません。」と言うメッセージが表示される。 ***当該メアドの外部ログイン有り状態で外部ログイン。 [#nc72282f] 当該するメアドの外部ログイン・アカウントで外部ログインした後、 -外部ログインに外部ログイン(とクレーム)を重ねてサインインされることを確認する。 --サインアップ画面 --サインイン画面 --アカウント編集画面 -なお、アカウント編集画面の[外部ログイン]の[管理]リンクから、~ サインインされたユーザとメアドが異なる外部ログイン・アカウントで~ サインインしようとした場合、コンフリクトが発生することを確認する。 >この場合、「ソーシャルログインでアカウントが一致しません。」と言うメッセージが表示される。 ***外部ログインの一覧表示と追加・削除 [#l12645ba] -外部ログインの一覧表示と追加・削除を行う。 -ローカル・ログインが無い場合、最後の外部ログインを削除できない。 **UserName≠メアド [#tb024b60] サインアップと、サインイン(外部ログインを重ねる)をテストする。 -サインアップ時、UserNameとE-mailアドレスの両方と連携する。 -UserNameとE-mailアドレスの属性の連携はサインアップ時にだけ行う。 -コンフリクトは、E-mailアドレスではなく、UserNameで発生する。 *[[OAuth 2.0 Serverの動作検証>汎用認証サイトの独自仕様#td27d2c1]] [#o226b9a8] OAuthで認証・認可した後、WebAPIへアクセスするまでの手順を使用して検証を行なう。 **Authorization Codeグラント種別 [#y138194c] -[[Authorization Codeグラント種別のテスト用link>汎用認証サイトのファーストステップガイド (1)#tad2bf60]]をclickする。 -テストケース --パラメタを修正する。 --パラメタ修正方法。 ---redirectではなく、linkなので、URLを直に修正してテスト可能。 ---認可画面のlocation barでも、URLを直に修正してテスト可能。 **Implicitグラント種別 [#t4b558e1] -[[Implicitグラント種別のテスト用link>汎用認証サイトのファーストステップガイド (1)#n81487c7]]をclickする。 -テストケース --パラメタを修正する。 --パラメタ修正方法。 ---redirectではなく、linkなので、URLを直に修正してテスト可能。 **Resource Owner Password Credentialsグラント種別 [#ff1f98d1] cURLコマンドを使用する。 ***処理の概要 [#r1983900] -Tokenエンドポイントに対して以下のRequestを出すと、Bearer Tokenが返ってくる。 --POST --Authorization: Basic XXXXXXXXXX~ '---> 「クライアントID:クライアント・パスワード」をBase64エンコードしたもの。 --Body : grant_type=password, username=ユーザID, password=ユーザ・パスワード, scope=XXXXX; -Bearer Tokenをヘッダに指定してWebAPIにアクセスすると情報を取得できる。 --GET --Authorization: Bearer YYYYYYYYYY ***cURLコマンド [#ea1f8213] Debug ProxyにFiddler等を使用すると尚良(其の際は、 --proxy オプションを指定する必要がある)。 -Bearer Tokenの取得 --Request (cURLコマンド) ---パターン >curl "http://localhost:nnnnn/MultiPurposeAuthSite/OAuthBearerToken" -u "client_id値:client_secret値" -d "grant_type=password" -d "username=ユーザ名の値" -d "password=パスワード値" -d "scope=scopeの値(スペース区切り)" ---例 >curl "http://localhost:63359/MultiPurposeAuthSite/OAuthBearerToken" -u "67d328bfe8604aae83fb15fa44780d8b:s_FhjujXG0U6kAD-c4S5ifiKdAgqFoil_UxKuN_Ur50" -d "grant_type=password" -d "username=super_tanaka@gmail.com" -d "password=xxxxx" -d "scope=profile email phone address aaa bbb" --Response (Body) {"access_token":"XXXXXXXXXX","token_type":"bearer","expires_in":nnnnn,"refresh_token":"YYYYYYYYYY"} -[[cURLを使用したOAuth2リソースへのアクセス>#b49f5632]] **Client Credentialsグラント種別 [#dc7b96b2] cURLコマンドを使用する。 ***処理の概要 [#ia9fecfa] -Tokenエンドポイントに対して以下のRequestを出すと、Bearer Tokenが返ってくる。 --POST --Authorization: Basic XXXXXXXXXX~ '---> 「クライアントID:クライアント・パスワード」をBase64エンコードしたもの。 --Body : grant_type=client_credentials, scope=XXXXX; -Bearer Tokenをヘッダに指定してWebAPIにアクセスすると情報を取得できる。 --GET --Authorization: Bearer YYYYYYYYYY ***cURLコマンド [#s3f7650b] Debug ProxyにFiddler等を使用すると尚良(其の際は、 --proxy オプションを指定する必要がある)。 -Bearer Tokenの取得 --Request (cURLコマンド) ---パターン >curl "http://localhost:nnnnn/MultiPurposeAuthSite/OAuthBearerToken" -u "client_id値:client_secret値" -d "grant_type=client_credentials" -d "scope=scopeの値(スペース区切り)" ---例 >curl "http://localhost:63359/MultiPurposeAuthSite/OAuthBearerToken" -u "67d328bfe8604aae83fb15fa44780d8b:s_FhjujXG0U6kAD-c4S5ifiKdAgqFoil_UxKuN_Ur50" -d "grant_type=client_credentials" -d "scope=profile email phone address aaa bbb" --Response (Body) {"access_token":"XXXXXXXXXX","token_type":"bearer","expires_in":nnnnn,"refresh_token":"YYYYYYYYYY"} -[[cURLを使用したOAuth2リソースへのアクセス>#b49f5632]] **cURLを使用したOAuth2リソースへのアクセス [#b49f5632] cURLを使用して、取得したBearer TokenによるOAuth2リソースへのアクセスを行う。 ***Request (cURLコマンド) [#ta2a1fd8] -パターン >curl "http://localhost:nnnnn/MultiPurposeAuthSite/userinfo" -H "Authorization: Bearer XXXXXXXXXX" -例 >curl "http://localhost:63359/MultiPurposeAuthSite/userinfo" -H "Authorization: Bearer XXXXXXXXXX" ***Response (Body) [#qfa293ea] -例 {"sub":"super_tanaka@gmail.com","email":"super_tanaka@gmail.com","email_verified":"True","phone_number":null,"phone_number_verified":"False"} *[[OpenID Connect Serverの動作検証>汎用認証サイトの独自仕様#t9212783]] [#e79d9c4d] OpenID Connectで認証・認可した後、WebAPIへアクセスするまでの手順を使用して検証を行なう。 **Authorization Code Flow [#e325a0da] -[[Authorization Code Flowのテスト用link>汎用認証サイトのファーストステップガイド (1)#tad2bf60]]をclickする。 -テストケース --パラメタを修正する。 --パラメタ修正方法。 ---redirectではなく、linkなので、URLを直に修正してテスト可能。 ---認可画面のlocation barでも、URLを直に修正してテスト可能。 **Implicit Flow [#r6a5a760] -[[Implicit Flowのテスト用link>汎用認証サイトのファーストステップガイド (1)#n81487c7]]をclickする。 *簡易テストシナリオ [#hc596088] **UserName = メアド [#k2da599c] ***[[サインアップ、サインイン>#q9cc845b]] [#v70b007f] -サインアップ -サインイン試行 --E-mailアドレス確認(E-mail confirmation)を行う。 --サインイン試行(パスワード誤り or 失念) -サインアウト -パスワード・リセットを行う~ (リセット後のパスワードで)サインイン -サインアウト -アカウント・ロックアウト ***[[アカウント編集>#f208cff5]] [#l3c651cd] 編集後、SecurityStampが機能してサインアウトすることがある。 -サインイン -ユーザ名 --ユーザ変更~ UserName=メアドの場合、E-mailアドレス確認(E-mail confirmation)が必要。 --サインアウト --(変更後のユーザ名で)サインイン -パスワード --パスワード変更 --サインアウト --(変更後のパスワードで)サインイン -E-mailアドレス --E-mailアドレスの設定~ E-mailアドレス確認(E-mail confirmation)が必要。 --2要素認証で変更後のE-mailが使用されることを確認。 --E-mailアドレスの削除 -電話番号 --電話番号の設定~ SMSコード発行・入力が必要。 --2要素認証で変更後のE-mailが使用されることを確認。 --電話番号の削除 -2要素認証 --2要素認証の有効化 --別ブラウザからログイン試行 --Notification Provider(E-mail or SMSでの通知)を選択 --E-mail or SMSでのコード通知 ---> コード入力 ---入力ミス ---> 2要素認証のサインインに成功 ---再入力 ---> 2要素認証のサインインに失敗 -外部ログイン(e.g. : マイクロソフト・アカウント) --外部ログインの追加 --サインアウト --(追加した外部ログインで)サインイン --追加した外部ログインの削除 -支払い元情報(オンライン決済サービス e.g. : StripeとPAY.JP) --クレジット・カード情報入力 --オンライン決済サービスの課金テスト -属性データ(非定型データ)~ 属性データ(非定型データ)をメンテナンスする。 -OAuth2データ --client_idとclient_secretを登録して、 --アカウント編集画面から連携をテストする。 --redirect_urlを追加登録して、 --独自のアプリケーションから連携をテストする。 ***外部ログイン [#eeda5156] -通常のサインアップをした後に、同じメアドの外部ログインでサインイン~ 前述の、サインアップ後にアカウント編集画面で外部ログインを追加した場合と同じ状態になる。 --サインアウト --再び外部ログインでサインイン -外部ログインでサインアップした場合、外部ログインでサインイン~ ローカル・ログインできないアカウントならではのテストケースを消化する。 --外部ログインの追加と削除 ---外部ログインを全て削除できないことを確認する。 ---以下の手順でローカル・ログインを作成した後、~ 全ての外部ログインを削除できることを確認する。 --以下の何れかで、ローカル・ログインを作成 ---アカウント編集画面から、パスワード変更 ---サインイン画面から、パスワード・リセット ***[[OAuth 2.0 の各Grant Typeのテスト>#o226b9a8]] [#xd7ae9b6] -Authorization Codeグラント --サインアウト --Authorization Codeグラントのリンク押下 --サインイン → スコープ許可 → テスト画面表示 → トークン取得まで。 -Implicitグラント --サインアウト --Implicitグラントのリンク押下 --サインイン → テスト画面表示 → トークン取得まで。 -以下は、別途テスト --Resource Owner Password Credentialsグラント種別 --Client Credentialsグラント種別 ***[[ユーザ・ロール管理者画面でのメンテナンス操作>#ra3d782b]] [#ed68fca3] 以下の操作を、 -ユーザ管理 --ユーザ一覧 --ユーザ作成 --ユーザ詳細 --ユーザ編集 --ユーザ削除 -ロール管理 --ロール一覧 --ロール作成 --ロール詳細 --ロール編集 --ロール削除 テストする。