PythonアプリケーションとSDKを調べてください

ソリューションのこのセクションでは、次の操作を行います。

  • Python Webアプリケーションの動作とコードを調べてください

  • Python WebアプリケーションがOracle Identity Cloud Serviceを開始する成功および失敗したログイン試行に関連付けられた診断データを確認します

Pythonアプリケーションの動作を確認してください

Python Webアプリケーションの動作は、認可コード権限タイプで定義された3レッグ認証フローに従います。

アプリケーションとOracle Identity Cloud ServiceがWebブラウザを使用して実行しているすべてのリクエスト、レスポンスおよびリダイレクトを検証するには、開発者モードをブラウザで有効にします。このソリューションではGoogle Chromeを使用します。

  1. Python Webアプリケーションを実行します。
  2. Google Chrome Webブラウザを開いて、http://localhost:8080 URLにアクセスし、「ログイン」をクリックします。
  3. F12を押して「ネットワーク」タブを選択し、「ログを保持」チェックボックスを選択します。アプリケーションとOracle Identity Cloud Service間のすべての通信を表示するには、このチェック・ボックスを選択します。
  4. ログイン ・ページで、右側に表示されるOracle赤色のアイコンをクリックするか、または「次でログイン」できます。

ブラウザの開発者ログには、次のイベント・フローが表示されます。

  1. ユーザーは/auth/oracleリソースをリクエストし、WebブラウザはPython Webアプリケーションからリダイレクト応答を受信します。
    Request URL: http://localhost:8000/auth/
    Request Method: GET
    Status Code: 302 Found
    
    Response Headers
    Location: https://idcs-1234.identity.oraclecloud.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
  2. Oracle Identity Cloud Serviceは承認コード要求を受け取り、サインイン・ページを表示します。
    Request URL: https://idcs-1234.identity.oraclecloud.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
    Request Method: GET
    Status Code: 303 See Other
     
    Response Headers
    Location:
    https://idcs-1234.identity.oraclecloud.com/ui/v1/signin
    Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
  3. ユーザーはOracle Identity Cloud Serviceにサインインします。Oracle Identity Cloud Serviceは、WebブラウザをPython WebアプリケーションのコールバックURLにリダイレクトします。
    Request URL:
    http://localhost:8000/callback/&code=[value has been omitted for readability]&state=1234
    Request Method: GET
    Status Code: 200 OK
     
    Response Headers
    Set-Cookie: sessionid=[value has been omitted for readability]

    この例では、コールバックURLによって、Webブラウザが、ユーザー・アクセス・トークンがセッション属性として設定されたホーム・ページにリダイレクトされます。

Pythonアプリケーションのコードを調べてください

Oracle Identity Cloud Serviceにサインインし、Python WebアプリケーションのコールバックURLにリダイレクトされると、Python Webアプリケーションはコマンドライン・ウィンドウに情報を表示します。

[Date] "GET / HTTP/1.1" 200 2520
[Date] "GET /login/ HTTP/1.1" 200 3489
[Date] "GET /auth/ HTTP/1.1" 302 0
[Date] "GET /callback?code=[value has been omitted for readability]&state=1234 HTTP/1.1" 301 0
[Date] "GET /callback/?code=[value has been omitted for readability]&state=1234 HTTP/1.1" 200 2690

診断データの確認

Python WebアプリケーションがOracle Identity Cloud Serviceにサインインしようとすると、成功した試行と失敗した試行の両方が、Oracle Identity Cloud Serviceの診断ログ・ファイルに登録されます。

  1. Oracle Identity Cloud Serviceにサインインします。
  2. Identity Cloud Serviceコンソールで、ナビゲーション・ドロワーを展開し、「設定」、「診断」の順にクリックします。
  3. 診断タイプとして「アクティビティ表示」を選択し、「保存」をクリックします。
  4. Oracle Identity Cloud Serviceからサインアウトします。

Oracle Identity Cloud Serviceは、次の15分の診断データを取得します。

  1. このソリューションの「Pythonアプリケーションの実行」トピックのステップを完了して、Python Webアプリケーションのログイン ・ページを表示します。
  2. 右側に表示されるOracle赤色のアイコンまたは「次でログインできます」をクリックします。
  3. サインインの試行に失敗した場合は、Oracle Identity Cloud Service「サインイン」ページで正しくないユーザー名またはパスワードを入力します。
  4. 正常にサインインするには、正しいユーザー名とパスワードを入力します。
  5. Python Webアプリケーションを使用して、Oracle Identity Cloud Serviceからサインアウトしてください。
  6. Oracle Identity Cloud Serviceにサインインします。
  7. Identity Cloud Serviceコンソールで、「ナビゲーション・ドロワー」を展開し、「レポート」、「診断データ」の順にクリックします。
  8. 15-Minute」の範囲、「アクティビティ・ビュー」ログ・タイプ、CSVレポート形式の順に選択して、「レポートのダウンロード」をクリックします。

診断ログファイルには、Oracle Identity Cloud Serviceへのサインイン試行に関する次のような情報が含まれています。

Message: ID Token will be signed with User Tenant:idcs-abcd1234 Resource Tenant:idcs-abcd1234, clientId=123456789abcdefghij
Component: OAuth
Timestamp: [Date]
Actor ID: your.email@domain.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"request":{"tenant":"idcs-abcd1234","grant types":"authorization_code","scopes":["urn:opc:idm:t.user.me"]},"user":{"id":"111111","name":"your.email@domain.com","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"client":{"id":"123456789abcdefghij","name":"Sample App","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"environment":{"isCSR":"false","onBehalfOfUser":"false"},"response":{"result":"ALLOWED","scopes":["urn:opc:idm:t.user.me"],"custom-claims":{"clientAppRoles":["Authenticated Client","Me"],"userAppRoles":["Authenticated","Global Viewer","Identity Domain Administrator"],"user_isAdmin":"true"}}}
Component: Authorization/getAllowedScopes
Timestamp: [Date]
Actor ID: your.email@domain.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"SSO SignOn Policy evaluation result for user : 11111  is : effect:ALLOW,authenticationFactor:IDP,allowUserToSkip2FAEnrolment:false,2FAFrequency:SESSION,reAuthenticate:false,trustedDevice2FAFrequency:
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Sign-On Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluateRule] Evaluating MFA rule
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Authentication Target App Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: idcssso
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"password":"********","authFactor":"USERNAME_PASSWORD","device":"{\"currentTime\":\"[date]",\"screenWidth\":1920,\"screenHeight\":1080,\"screenColorDepth\":24,\"screenPixelDepth\":24,\"windowPixelRatio\":1,\"language\":\"en\",\"userAgent\":\"Mozilla\/5.0 (Windows NT 10.0
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"No session found so need to collect credentials","Redirecting to Login URL: ":https://idcs-abcd1234.identity.oraclecloud.com/ui/v1/signin}
Component: SSO
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
...
---------------------------------------------------------------
 
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Identity Provider Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
Message: Authorization Request, received parameters: scope[urn:opc:idm:t.user.me openid] response_type[code] state[1234] redirect_uri[http://localhost:8000/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated

最新のログがファイルの先頭に表示されます。