查看 Java 應用程式與 SDK
在解決方案的這個部分,您可以:
-
檢查 Java Web 應用程式的行為和程式碼
-
檢查與 Java Web 應用程式起始至 Oracle Identity Cloud Service 的成功與失敗登入嘗試關聯的診斷資料。
檢查 Java 應用程式的行為
Java Web 應用程式的行為遵循由授權代碼授權類型所定義的三方驗證流程。
啟用瀏覽器的開發人員模式,以便驗證應用程式和 Oracle Identity Cloud Service 執行的所有要求、回應和重新導向。下列範例使用 Google Chrome。
瀏覽器的開發人員日誌應顯示下列事件流程:
-
您要求
/auth/oracle
資源,而您的 Web 瀏覽器會收到來自 Java Web 應用程式的重新導向回應。Request URL: http://localhost:8080/auth Request Method: GET Status Code: 302 Found Response Headers Location: https://idcs-abcd1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri= http%3A%2F%2Flocalhost%3A8080%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
-
Oracle Identity Cloud Service 會收到您的授權碼要求,並顯示登入頁面。
Request URL: https://idcs-abcd1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri= http%3A%2F%2Flocalhost%3A8080%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-abcd1234.identity.domain.com/ui/v1/signin Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
-
您登入 Oracle Identity Cloud Service ,它會將您的 Web 瀏覽器重新導向至 Java Web 應用程式的回呼 URL。
Request URL: http://localhost:8080/callback?code=[value has been omitted for readability]&state=1234 Request Method: GET Status Code: 200 OK Response Hearders Set-Cookie: JSESSIONID=[value has been omitted for readability]
在此範例中,回呼 URL 會將您的 Web 瀏覽器重導至首頁,並將您的使用者存取權杖和 ID 權杖設為階段作業屬性。
查看 SDK 日誌
請依照下列步驟開啟 Oracle Identity Cloud Service 的 Java SDK 登入,並檢查您在開發期間發現的任何問題。
- 開啟
ConnectionOptions.java
類別檔案並編輯getOptions()
方法 - 將
Constants.LOG_LEVEL
值設為DEBUG
。
重新建立應用程式並重新執行。
您會看到日誌詳細資訊,如下所示:
Fine: Got token manager
Fine: using config endpoint: https://idcs-abcd1234.identity.domain.com:443/.well-known/idcs-configuration
...
Fine: Got response content: [value has been omitted for readability]
...
Fine: getAuthorizationCodeUrl returning with url: [value has been omitted for readability]
...
Fine: authorizationCode with code: [value has been omitted for readability]
...
Fine: Obtaining access token from: [value has been omitted for readability]
...
Fine: returning access token
...
Fine: Token signature verification result: true
檢查診斷資料
Java Web 應用程式起始至 Oracle Identity Cloud Service 的成功與失敗登入嘗試都已在 Oracle Identity Cloud Service 診斷日誌檔中註冊。
- 登入 Oracle Identity Cloud Service 主控台。
- 在主控台中,依序展開導覽側邊功能表和設定值,然後按一下診斷。
- 選取活動檢視作為診斷類型,然後按一下儲存。
- 登出 Oracle Identity Cloud Service 。
Oracle Identity Cloud Service 會擷取接下來 15 分鐘的診斷資料。
-
完成「執行 Java 應用程式」主題中的步驟,以顯示 Java Web 應用程式的登入頁面。
-
按一下紅色的 Oracle 圖示。
-
若要嘗試登入失敗,請在 Oracle Identity Cloud Service 的登入頁面中輸入不正確的使用者名稱或密碼。
-
若要成功登入,請輸入正確的使用者名稱和密碼。
-
使用 Java Web 應用程式登出 Oracle Identity Cloud Service 。
-
再次登入 Oracle Identity Cloud Service 主控台。
-
在主控台中,展開導覽側邊功能表,按一下報表,然後按一下診斷資料。
-
針對時間範圍選取 15 分鐘、針對日誌類型選取活動檢視、針對報表格式選取 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@example.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"request":{"tenant":"idcs-abcd1234","grant types":"authorization_code","scopes":["urn:opc:idm:t.user.me"]},"user":{"id":"111111","name":"your.email@example.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@example.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:8080/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated
最近的日誌會顯示在檔案頂端。