「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
汎用認証サイト(Multi-purpose Authentication Site)の動作検証手順のメモする。
マルチテナント設定時は、管理画面を重点的にチェックする。
次のパターンを意識的にテストする。
ローカル・ログイン無しのアカウントが作成される。
以下の2つの手順でローカル・ログインを作成できることを確認する。
ローカル・ログインでサインアップした後に、
この場合、「ソーシャルログインでアカウントが一致しません。」と言うメッセージが表示される。
当該するメアドの外部ログイン・アカウントで外部ログインした後、
この場合、「ソーシャルログインでアカウントが一致しません。」と言うメッセージが表示される。
この場合、
基本的には、"外部ログイン = OFF"。
動作に影響なし。
OAuthで認証・認可した後、WebAPIへアクセスするまでの手順を使用して検証を行なう。
「http://localhost:nnnnn/home/index」で表示されるAuthorization Codeグラント種別のテスト用linkをclickする。
「http://localhost:nnnnn/home/index」で表示されるImplicitグラント種別のテスト用linkをclickする。
cURLコマンドを使用する。
Debug ProxyにFiddler等を使用すると尚良(其の際は、 --proxy オプションを指定する必要がある)。
>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"
{"access_token":"XXXXXXXXXX","token_type":"bearer","expires_in":nnnnn,"refresh_token":"YYYYYYYYYY"}
cURLコマンドを使用する。
Debug ProxyにFiddler等を使用すると尚良(其の際は、 --proxy オプションを指定する必要がある)。
>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"
{"access_token":"XXXXXXXXXX","token_type":"bearer","expires_in":nnnnn,"refresh_token":"YYYYYYYYYY"}
cURLを使用して、取得したBearer TokenによるOAuthリソースへのアクセスを行う。
>curl "http://localhost:nnnnn/MultiPurposeAuthSite/userinfo" -H "Authorization: Bearer XXXXXXXXXX"
>curl "http://localhost:63359/MultiPurposeAuthSite/userinfo" -H "Authorization: Bearer XXXXXXXXXX"
{"sub":"super_tanaka@gmail.com","email":"super_tanaka@gmail.com","email_verified":"True","phone_number":null,"phone_number_verified":"False"}
(管理者アカウントで)サインインして管理操作を実行できる。
管理者アカウント
でのみ操作可能。
管理者アカウント=システム管理者アカウントでのみ操作可能。
ユーザ・ロールの所有権は、マルチテナント・モードで重要になる。
コチラを参照。
編集後、SecurityStamp?が機能してサインアウトすることがある。
以下の操作を、
以下の条件下でテストする。
所有権の無いオブジェクトに対する操作ができないことを確認する。
特に、テナント管理者がGUIDのコピペや直打ちなどを行っても、
他テナントのオブジェクトは絶対に操作できないことを確認する。