目錄

簡介

背景資訊

必要條件

需求

採用元件

設定

高級流概述

配置用於整合的Azure AD

配置ISE進行整合

不同使用案例的ISE策略示例

驗證

疑難排解

REST身份驗證服務問題

REST ID身份驗證問題

使用日誌檔案

簡介

本文檔介紹通過REST身份服務通過資源所有者密碼憑據實現的Cisco ISE 3.0與Azure AD的整合。

背景資訊

本文檔介紹如何配置身份服務引擎(ISE)3.0與Microsoft(MS)Azure Active Directory(AD)的整合並對其進行故障排除，該整合是通過在資源所有者密碼憑據(ROPC)的幫助下實現的具象狀態傳輸(REST)身份(ID)服務實現的。

必要條件

需求

思科建議您瞭解以下主題的基本知識：

- ISE

- MS Azure AD

- 瞭解ROPC協定實施和限制；鏈接

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- Cisco ISE版本3.0

- MS Azure AD

- WS-C3850-24P，帶16.9.2軟體

- 採用9.10(1)的ASAv

- Windows 10.0.18363

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

設定

ISE REST ID功能基於ISE 3.0 - REST身份驗證服務中引入的新服務。此服務負責通過Open Authorization(OAuth)ROPC交換與Azure AD通訊，以便執行使用者身份驗證和組檢索。 REST身份驗證服務預設處於禁用狀態，在管理員啟用後，它將在部署中的所有ISE節點上運行。 由於在使用者身份驗證時與雲進行REST身份驗證服務通訊，因此路徑上的任何延遲都會給身份驗證/授權流帶來額外的延遲。此延遲不在ISE控制範圍內，必須仔細規劃和測試REST身份驗證的任何實施，以避免對其他ISE服務產生影響。

高級流概述

1. Azure雲管理員建立新的應用程式（應用）註冊。此應用的詳細資訊稍後將在ISE上使用，以便與Azure AD建立連線。

2. Azure雲管理員必須使用以下內容配置應用：

- 建立客戶端密碼

- 啟用ROPC

- 新增組宣告

- 定義應用程式程式設計介面(API)許可權

3. ISE管理員啟用REST身份驗證服務。在執行任何其他操作之前，必須先完成此操作。

4.將更改寫入配置資料庫並在整個ISE部署中複製。

5.在所有節點上啟動REST身份驗證服務。

6. ISE管理員使用步驟2中的詳細資訊配置REST ID儲存。

7.將更改寫入配置資料庫並在整個ISE部署中複製。

8. ISE管理員建立新的身份庫序列或修改已存在的身份庫序列並配置身份驗證/授權策略。

9.將更改寫入配置資料庫並在整個ISE部署中複製。

10.端點啟動身份驗證。根據ROPC協定規范，必須通過加密的HTTP連線以明文形式向Microsoft身份平台提供使用者密碼；因此，ISE目前支援的唯一可用身份驗證選項為：

- 使用密碼驗證通訊協定(PAP)作為內部方法的可擴充身份驗證通訊協定 — 通道傳輸層安全(EAP-TTLS)

- 使用PAP的AnyConnect SSL VPN身份驗證

11.通過Radius與ISE策略服務節點(PSN)交換。

12. Process Runtime(PrRT)通過內部API向REST ID服務傳送包含使用者詳細資訊（使用者名稱/密碼）的請求。

13. REST ID服務將OAuth ROPC請求通過超文本傳輸協議安全(HTTPS)傳送到Azure AD。

14. Azure AD執行使用者身份驗證並提取使用者組。

15.身份驗證/授權結果返回到ISE。

在點15之後，身份驗證結果和提取的組返回到PrRT，其中涉及策略評估流程並分配最終身份驗證/授權結果。Access-Accept with attributes from the authorization profile或Access-Reject returned to Network Access Device(NAD)。

配置用於整合的Azure AD

1.找到AppRegistration Service，如下圖所示。

圖2.

a.在全域性搜尋欄中鍵入AppRegistration。

b.按一下App registration service。

2.建立新的應用註冊。

圖3.

3.註冊新應用。

圖4.

a.定義應用的名稱。

b.定義哪些帳戶可以使用新應用程式。

c.按收銀機按鈕。

4.導覽至Certificate & secrets。

圖5.

5.建立  New client secret  如下圖所示。

圖6.

6.設定  client secret如下圖所示。

圖7.

a.定義新秘密的說明。

b.選擇到期期間。

c.按一下Add 按鈕。

7.複製並儲存加密值（以後在整合配置時需要在ISE上使用）。

圖8.

8.導航回到 Overview  頁籤以複製 App ID  和.

圖9.

9.為應用啟用ROPC。

圖10

a.導航至Authentication 頁籤。

b.找到「高級設定」部分。

c.選擇Yes for — 將應用程式視為公共客戶端。

d.按一下Save 按鈕。

10. Add group claims  到App。

圖11

a.導航到Token配置。

b.繼續 — Add groups claim .

11.定義需要新增的組型別

圖 12.

a.選擇 — 所有組。

b.按一下Add 按鈕。

12.新增 API permissions .

圖 13.

a.導航至 API permissions .

b.點選 Add permission .

13.新增 Microsoft Graph  許可權。

圖14

14.新增 Application permissions .

圖15

15.新增 Group.Read.All  許可權。

圖16

a.找到API型別 — 組。

b.選擇 Group.Read.All .

c.按一下 Add permissions  按鈕。

注意：藉助不同的API許可權，可以通過多種方式從Azure AD獲取使用者組資料。在Cisco TAC實驗中，此示例中介紹的方法被證明是成功的。如果您的Azure AD管理員建議使用其他API許可權，請使用其他API許可權。

16. Grant admin consent  用於API許可權。

圖17

17.確認管理員的授權同意。

圖18

此時，您可以考慮在Azure AD端完全配置整合。

配置ISE進行整合

1.定位至「身份管理」設定。

圖19

導航至 Administration > Identity Management> Settings .

2.啟用REST ID服務（預設情況下禁用）。

圖20

導航至REST ID Store Settings 並更改REST ID儲存設定的狀態，以便Enable，然後 Submit  您的更改。

3.建立REST ID儲存。

圖21.

切換到 External Identity Sources  頁籤，按一下 REST (ROPC)  子頁籤，然後按一下Add。

4.配置REST ID儲存。

圖22.

a.定義ID儲存名稱。稍後配置授權策略時，可在ISE詞典清單中找到此名稱。此外，此名稱顯示在身份驗證策略設定中可用的ID儲存清單中，以及身份儲存序列配置中可用的ID儲存清單中。

b.提供客戶端ID（在Azure AD整合配置部分的步驟8中從Azure AD獲取）。

c.提供客戶端密碼（在Azure AD整合配置部分的步驟7中從Azure AD獲取）。

d.提供租戶ID（在Azure AD整合配置部分的步驟8中從Azure AD獲取）。

e.配置使用者名稱Sufix — 預設情況下，ISE PSN使用終端使用者提供的使用者名稱，該使用者名稱以sAMAccountName格式提供（短使用者名稱，例如bob）；在這種情況下，Azure AD無法找到使用者。 Username Sufix是新增到使用者提供的使用者名稱中的值，用於使使用者名稱採用UPN格式。

注意：由於ROPC在身份驗證期間依賴使用者名稱屬性，因此僅限於使用者身份驗證。Azure AD中的裝置對象沒有使用者名稱屬性。

f.按Test connection以確認ISE可以使用提供的應用詳細資訊來建立與Azure AD的連線。

g.按「載入組」以將Azure AD中的可用組新增到REST ID儲存中。此處的示例顯示了管理員體驗的樣子。

註：請注意思科錯誤ID CSCvx00345的缺陷，因為它會導致組無法載入。該缺陷已在ISE 3.0補丁2中修復。

圖23

h.提交更改。

5.在此步驟中，考慮建立新的身份儲存序列，其中包括新建立的REST ID儲存。

6.當REST ID儲存或包含已分配給身份驗證策略的身份儲存序列時，將Process Failure的預設操作從DROP更改為REJECT（如圖所示）。

圖24

a.找到使用REST ID儲存的身份驗證策略。

b.開啟「選項」下拉選單。

c. Process Failed的更改預設操作從DROP更改為REJECT。

當REST ID儲存內發生特定故障時，需要這樣才能避免在NAD端標籤為失效的PSN，如下所示：

- 該使用者不是Azure AD中任何組的成員。

- 必須更改使用者密碼。

7.將REST ID儲存字典新增到授權策略中。

圖25

a.開啟「所有字典」下拉選單。

b.使用與REST ID儲存相同的方式找到名為的字典。

8.新增外部身份組（自ISE 3.0起，REST ID儲存字典中唯一可用的屬性是外部組）。

圖26

不同使用案例的ISE策略示例

在Dot1x身份驗證的情況下，可以使用網路訪問字典中的EAP隧道條件來匹配EAP-TTLS嘗試，如下圖所示。

圖27

a.定義與EAP-TTLS相等的EAP隧道以匹配需要轉發到REST ID儲存的嘗試。

b.直接在REST ID儲存中選擇或在「使用」列中包含身份儲存序列的「身份儲存序列」。

在單個授權策略內部，來自Azure AD的外部組可以與EAP隧道型別一起使用：

圖28

對於基於VPN的流，您可以使用隧道組名稱作為區分因素：

身份驗證策略：

授權策略：

圖29

驗證

使用本節內容，確認您的組態是否正常運作。

1.確認REST身份驗證服務在ISE節點上運行。

要檢查此項，需要在目標ISE節點的安全外殼(SSH)外殼中執行show application status ise命令：

skuchere-ise30-1/admin# show application status ise

ISE PROCESS NAME STATE PROCESS ID

--------------------------------------------------------------------

Database Listener running 101790

Database Server running 92 PROCESSES

Application Server running 39355

Profiler Database running 107909

ISE Indexing Engine running 115132

AD Connector running 116376

M&T Session Database running 107694

M&T Log Processor running 112553

Certificate Authority Service running 116226

EST Service running 119875

SXP Engine Service disabled

Docker Daemon running 104217

TC-NAC Service disabled

pxGrid Infrastructure Service disabled

pxGrid Publisher Subscriber Service disabled

pxGrid Connection Manager disabled

pxGrid Controller disabled

PassiveID WMI Service disabled

PassiveID Syslog Service disabled

PassiveID API Service disabled

PassiveID Agent Service disabled

PassiveID Endpoint Service disabled

PassiveID SPAN Service disabled

DHCP Server (dhcpd) disabled

DNS Server (named) disabled

ISE Messaging Service running 104876

ISE API Gateway Database Service running 106853

ISE API Gateway Service running 110426

Segmentation Policy Service disabled

REST Auth Service running 63052

SSE Connector disabled

2.驗證身份驗證時是否使用了REST ID儲存（請檢視詳細的身份驗證報告的「步驟。」部分）。

a. PSN使用選定的REST ID儲存啟動純文字檔案身份驗證。

b.已與Azure雲建立連線。

c.實際驗證步驟 — 注意此處顯示的延遲值。如果您使用安全雲的所有身份驗證都遇到嚴重延遲，這會影響其他ISE流，因此整個ISE部署變得不穩定。

d.確認身份驗證成功。

e.確認答覆中提供的群組資料。

f.使用使用者組資料填充的會話上下文。有關ISE會話管理流程的更多詳細資訊，請考慮閱讀本文的 — 連結。

3.確認已選擇預期的身份驗證/授權策略（對於詳細的身份驗證報告的此調查概述部分）。

圖30

疑難排解

本節提供的資訊用於對組態進行疑難排解。

REST Auth服務問題

若要疑難排解REST身份驗證服務的所有問題，需要首先複查ADE.log文件。支援捆綁包位置-/support/adeos/ade

REST Auth Service的搜尋關鍵字是 — ROPC-control。

此範例顯示REST身份驗證服務如何啟動：

2020-08-30T11:15:38.624197+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Starting

2020-08-30T11:15:39.217794+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] inside docker_image_exists

2020-08-30T11:15:39.290301+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Image exist with ID =

2020-08-30T11:15:39.291858+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Docker image doesn't exist

2020-08-30T11:15:39.293768+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Load docker image ROPC

2020-08-30T11:15:39.359490+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Error: No such image: ROPC

2020-08-30T11:15:42.789242+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Loaded image: ROPC:latest

2020-08-30T11:15:42.830411+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Docker image ROPC successfully loaded.

2020-08-30T11:15:42.832131+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Setting up REST Auth Service

2020-08-30T11:15:42.844051+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] inside docker_create_container

2020-08-30T11:15:53.479968+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Copying binaries to the docker container...

2020-08-30T11:15:55.325973+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status false

2020-08-30T11:15:57.103245+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status true

2020-08-30T11:15:57.105752+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Creating ROPC pid file

2020-08-30T11:15:57.278374+02:00 skuchere-ise30-1 admin: info:[application:operation:ROPC-control.sh] Container run status true

在服務無法啟動或意外中斷的情況下，始終應在有問題的時間範圍內檢視ADE.log。

REST ID身份驗證問題

在使用REST ID儲存區時，如果身份驗證失敗，則始終需要從詳細的身份驗證報告開始。在「其他屬性」區域中，您可以檢視包含由Azure雲返回的錯誤的RestAuthErrorMsg部分：

圖31

使用日誌檔案

在ISE 3.0中，由於REST ID功能的受控引進，預設情況下啟用它的調試。所有與REST ID相關的日誌都儲存在ROPC檔案中，這些檔案可以通過CLI檢視：

skuchere-ise30-1/admin# sh logging application | i ropc

755573 Oct 04 2020 09:10:29 ropc/ropc.log

skuchere-ise30-1/admin# sh logging application ropc/ropc.log

23:49:31.449 [http-nio-9601-exec-6] DEBUG c.c.i.r.c.ROPCController - Starting ROPC auth flow

23:49:31.788 [http-nio-9601-exec-6] DEBUG c.c.i.r.u.ScimUtility - Found user and pass in the SCIM filter

在安裝了補丁的ISE 3.0上，請注意檔名是rest-id-store.log，而不是ropc.log。提供的上一個搜尋示例有效，因為資料夾名稱未更改。

或者從ISE支援包提取這些檔案。

以下是幾個顯示不同工作和非工作場景的日誌示例：

1. ISE節點不信任Azure Graph時的證書錯誤。當組未載入到REST ID儲存設定中時，可以看到此錯誤。

20:44:54.420 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start proxy load for URI 'https://graph.microsoft.com/v1.0/groups'

20:44:54.805 [http-nio-9601-exec-7] ERROR c.c.i.r.p.a.AzureIdentityProviderFacade - Couldn't fetch application groups, REST error

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)

at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)

at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)

此問題表示Microsoft graph API證書不受ISE信任。ISE 3.0.0.458未在受信任儲存中安裝DigiCert全域性根G2 CA。這一點記錄在缺陷中

— 思科錯誤ID CSCvv80297要解決此問題，您需要在ISE受信任儲存中安裝DigiCert全域性根G2 CA，並將其標籤為受思科服務信任。

證書可從此處下載 — https://www.digicert.com/kb/digicert-root-certificates.htm

2.錯誤的應用程式密碼。

10:57:53.200 [http-nio-9601-exec-1] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

10:57:54.205 [http-nio-9601-exec-1] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_client","error_description":"AADSTS7000215: Invalid client secret is provided.\r\nTrace ID: 99cc29f7-502a-4aaa-b2cf-1daeb071b900\r\nCorrelation ID: a697714b-5ab2-4bd1-8896-f9ad40d625e5\r\nTimestamp: 2020-09-29 09:01:36Z","error_codes":[7000215],"timestamp":"2020-09-29 09:01:36Z","trace_id":"99cc29f7-502a-4aaa-b2cf-1daeb071b900","correlation_id":"a697714b-5ab2-4bd1-8896-f9ad40d625e5","error_uri":"https://login.microsoftonline.com/error?code=7000215"}'

10:57:54.206 [http-nio-9601-exec-1] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.InvalidApplicationAuthException: AADSTS7000215: Invalid client secret is provided.

Trace ID: 99cc29f7-502a-4aaa-b2cf-1daeb071b900

Correlation ID: a697714b-5ab2-4bd1-8896-f9ad40d625e5

Timestamp: 2020-09-29 09:01:36Z - Error Codes: [7000215]

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateApplication(AzureIdentityProviderFacade.java:117)

3.錯誤的應用程式ID。

21:34:36.090 [http-nio-9601-exec-4] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

21:34:36.878 [http-nio-9601-exec-4] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '400'. Error - '{"error":"unauthorized_client","error_description":"AADSTS700016: Application with identifier '825aab1f-be45-4d53-92fe-bb756' was not found in the directory '83cc4b2c-c608-4563-b6bd-dc8e83977ff6'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You have sent your authentication request to the wrong tenant.\r\nTrace ID: 6dbd0fdd-0128-4ea8-b06a-5e78f37c0100\r\nCorrelation ID: eced0c34-fcc1-40b9-b033-70e5abe75985\r\nTimestamp: 2020-08-31 19:38:34Z","error_codes":[700016],"timestamp":"2020-08-31 19:38:34Z","trace_id":"6dbd0fdd-0128-4ea8-b06a-5e78f37c0100","correlation_id":"eced0c34-fcc1-40b9-b033-70e5abe75985","error_uri":"https://login.microsoftonline.com/error?code=700016"}'

21:34:36.879 [http-nio-9601-exec-4] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.InvalidApplicationAuthException: AADSTS700016: Application with identifier '825aab1f-be45-4d53-92fe-bb756' was not found in the directory '83cc4b2c-c608-4563-b6bd-dc8e83977ff6'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You have sent your authentication request to the wrong tenant.

Trace ID: 6dbd0fdd-0128-4ea8-b06a-5e78f37c0100

Correlation ID: eced0c34-fcc1-40b9-b033-70e5abe75985

Timestamp: 2020-08-31 19:38:34Z - Error Codes: [700016]

4.未找到使用者。

10:43:01.351 [http-nio-9601-exec-2] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '400'. Error - '{"error":"invalid_grant","error_description":"AADSTS50034: The user account bob does not exist in the 83cc4b2c-c608-4563-b6bd-dc8e83977ff6 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 9417a19e-66f8-4887-ab7a-a9ee268b1a00\r\nCorrelation ID: df3722ff-cd29-4ea2-98fc-fff0117a8db9\r\nTimestamp: 2020-08-31 08:46:57Z","error_codes":[50034],"timestamp":"2020-08-31 08:46:57Z","trace_id":"9417a19e-66f8-4887-ab7a-a9ee268b1a00","correlation_id":"df3722ff-cd29-4ea2-98fc-fff0117a8db9","error_uri":"https://login.microsoftonline.com/error?code=50034"}'

10:43:01.352 [http-nio-9601-exec-2] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_grant","error_description":"AADSTS50034: The user account bob does not exist in the 83cc4b2c-c608-4563-b6bd-dc8e83977ff6 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 9417a19e-66f8-4887-ab7a-a9ee268b1a00\r\nCorrelation ID: df3722ff-cd29-4ea2-98fc-fff0117a8db9\r\nTimestamp: 2020-08-31 08:46:57Z","error_codes":[50034],"timestamp":"2020-08-31 08:46:57Z","trace_id":"9417a19e-66f8-4887-ab7a-a9ee268b1a00","correlation_id":"df3722ff-cd29-4ea2-98fc-fff0117a8db9","error_uri":"https://login.microsoftonline.com/error?code=50034"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

5.使用者密碼已過期 — 通常可以為新建立的使用者生成，因為Azure管理員定義的密碼需要在登入到Office365時更改。

10:50:55.096 [http-nio-9601-exec-4] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_grant","error_description":"AADSTS50055: The password is expired.\r\nTrace ID: 776120b2-9687-4f88-bf93-822a4d019c00\r\nCorrelation ID: 5defbdc6-3a7f-425f-91e9-ba3c10fcc410\r\nTimestamp: 2020-08-31 08:54:51Z","error_codes":[50055],"timestamp":"2020-08-31 08:54:51Z","trace_id":"776120b2-9687-4f88-bf93-822a4d019c00","correlation_id":"5defbdc6-3a7f-425f-91e9-ba3c10fcc410","error_uri":"https://login.microsoftonline.com/error?code=50055","suberror":"user_password_expired"}'

10:50:55.097 [http-nio-9601-exec-4] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_grant","error_description":"AADSTS50055: The password is expired.\r\nTrace ID: 776120b2-9687-4f88-bf93-822a4d019c00\r\nCorrelation ID: 5defbdc6-3a7f-425f-91e9-ba3c10fcc410\r\nTimestamp: 2020-08-31 08:54:51Z","error_codes":[50055],"timestamp":"2020-08-31 08:54:51Z","trace_id":"776120b2-9687-4f88-bf93-822a4d019c00","correlation_id":"5defbdc6-3a7f-425f-91e9-ba3c10fcc410","error_uri":"https://login.microsoftonline.com/error?code=50055","suberror":"user_password_expired"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

6.由於API許可權錯誤，無法載入組。

12:40:06.624 [http-nio-9601-exec-9] ERROR c.c.i.r.u.RestUtility - Error response in 'GET' request. Status - '403'. Error - '{

"error": {

"code": "Authorization_RequestDenied",

"message": "Insufficient privileges to complete the operation.",

"innerError": {

"date": "2020-08-30T10:43:59",

"request-id": "da458fa4-cc8a-4ae8-9720-b5370ad45297"

}

}

}'

7.當Azure端上不允許使用ROPC時，身份驗證失敗。

11:23:10.824 [http-nio-9601-exec-2] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

11:23:11.776 [http-nio-9601-exec-2] ERROR c.c.i.r.u.RestUtility - Error response in 'POST' request. Status - '401'. Error - '{"error":"invalid_client","error_description":"AADSTS7000218: The request body must contain the parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: 856d1ced-06c3-4446-a856-813789579b00\r\nCorrelation ID: b0a9cb82-4f37-46b3-abf5-361d8ce34094\r\nTimestamp: 2020-08-31 09:27:08Z","error_codes":[7000218],"timestamp":"2020-08-31 09:27:08Z","trace_id":"856d1ced-06c3-4446-a856-813789579b00","correlation_id":"b0a9cb82-4f37-46b3-abf5-361d8ce34094","error_uri":"https://login.microsoftonline.com/error?code=7000218"}'

11:23:11.777 [http-nio-9601-exec-2] ERROR c.c.i.r.c.ROPCController - Request related Error

com.cisco.ise.ROPC.entities.exceptions.ROPCResponseErrorException: {"error":"invalid_client","error_description":"AADSTS7000218: The request body must contain the parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: 856d1ced-06c3-4446-a856-813789579b00\r\nCorrelation ID: b0a9cb82-4f37-46b3-abf5-361d8ce34094\r\nTimestamp: 2020-08-31 09:27:08Z","error_codes":[7000218],"timestamp":"2020-08-31 09:27:08Z","trace_id":"856d1ced-06c3-4446-a856-813789579b00","correlation_id":"b0a9cb82-4f37-46b3-abf5-361d8ce34094","error_uri":"https://login.microsoftonline.com/error?code=7000218"}

at com.cisco.ise.ROPC.providers.azure.AzureIdentityProviderFacade.authenticateUser(AzureIdentityProviderFacade.java:87)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.authenticateUser(AzureROPCFlow.java:100)

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.doEntireFlow(AzureROPCFlow.java:69)

at com.cisco.ise.ROPC.controllers.ROPCController.ROPCAuthFlow(ROPCController.java:168)

at com.cisco.ise.ROPC.controllers.ROPCController.get(ROPCController.java:85)

at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

8.身份驗證失敗，因為使用者不屬於Azure端的任何組。

21:54:55.976 [http-nio-9601-exec-5] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

21:54:57.312 [http-nio-9601-exec-5] ERROR c.c.i.r.p.a.AzureROPCFlow - Missing claims in the id token: "name" or "groups"

21:54:57.313 [http-nio-9601-exec-5] ERROR c.c.i.r.c.ROPCController - Server Error

com.cisco.ise.ROPC.entities.exceptions.JsonParseException: Json exception: Missing claims in the id token: "name" or "groups"

at com.cisco.ise.ROPC.providers.azure.AzureROPCFlow.validateIdTokenPayload(AzureROPCFlow.java:93)

9.成功的使用者身份驗證和組檢索。

11:46:03.035 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Starting ROPC auth flow

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.ScimUtility - Found user and pass in the SCIM filter

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Getting the right ROPC handler for the request IDPType AZURE

11:46:03.037 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - Getting user groups from handler

11:46:03.038 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start building http client

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start proxy load for URI 'https://login.microsoftonline.com/83cc4b2c-c608-4563-b6bd-dc8e83977ff6/oauth2/v2.0/token'

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start check if host is bypass

11:46:03.039 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Iterating bypass hosts '192.168.1.10,10.201.228.98,10.62.145.72,172.16.201.204,172.16.201.203' to find host 'login.microsoftonline.com'

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Proxy server found with address '192.168.255.40' and port '8080', load to httpclient

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - Start adding proxy credentials to builder

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.u.HttpClientWrapper - No credentials found for proxy

11:46:03.040 [http-nio-9601-exec-7] DEBUG c.c.i.r.e.c.CertificateCache - Created SSLContext with TLSv1.2 algorithm

11:46:03.041 [http-nio-9601-exec-7] DEBUG c.c.i.r.e.c.CertificateCache - SSLContext initialized with trust managers

11:46:04.160 [http-nio-9601-exec-7] DEBUG c.c.i.r.c.ROPCController - The ROPCHandlerResponse is: {

"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User" ],

"userName" : "username",

"name" : {

"formatted" : "bob"

},

"displayName" : "bob",

"groups" : [ {

"value" : "17db2c79-fb87-4027-ae13-88eb5467f25b"

} ],

"roles" : [ ]

}