内容

はじめに

背景説明

前提条件

要件

使用するコンポーネント

設定

高レベルフローの概要

Azure ADの統合の構成

統合のためのISEの設定

さまざまな使用例のISEポリシーの例

確認

トラブルシュート

REST認証サービスに関する問題

REST ID認証に関する問題

ログファイルの操作

はじめに

このドキュメントでは、リソース所有者のパスワードクレデンシャルを使用してREST Identityサービスを通じて実装されるCisco ISE 3.0とAzure ADの統合について説明します。

背景説明

このドキュメントでは、リソース所有者パスワードクレデンシャル(ROPC)を使用して、Representational State Transfer(REST)ID(ID)サービスを介して実装されたMicrosoft(MS)Azure Active Directory(AD)とのIdentity Services Engine(ISE)3.0の統合を設定およびトラブルシューティングする方法について説明します。

前提条件

要件

次の項目に関する基本的な知識が推奨されます。

- ISE

- MS Azure AD

- ROPCプロトコルの実装と制限事項の理解、リンク

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。

- Cisco ISE バージョン 3.0

- MS Azure AD

- WS-C3850-24P（ソフトウェア16.9.2）

- 9.10を使用したASAv(1)

- Windows 10.0.18363

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

設定

ISE REST ID機能は、ISE 3.0(REST Auth Service)で導入された新しいサービスに基づいています。このサービスは、ユーザー認証とグループ取得を実行するために、オープン認証(OAuth) ROPC交換を介してAzure ADと通信します。 REST認証サービスはデフォルトで無効になっており、管理者が有効にすると、導入環境内のすべてのISEノードで実行されます。 ユーザ認証時にクラウドとのREST Auth Service通信が発生するため、パスの遅延によって認証/認可フローに追加の遅延が発生します。この遅延はISEの制御外であり、REST認証の実装は、他のISEサービスへの影響を避けるために慎重に計画およびテストする必要があります。

高レベルフローの概要

1. Azureクラウド管理者が新しいアプリケーション（アプリ）登録を作成します。このアプリの詳細は、後でAzure ADとの接続を確立するためにISEで使用されます。

2. Azureクラウド管理者は、次の項目でアプリを構成する必要があります：

- クライアントシークレットの作成

- ROPCの有効化

- グループ要求の追加

- アプリケーションプログラミングインターフェイス(API)権限の定義

3. ISE管理者がREST認証サービスを有効にします。他のアクションを実行する前に行う必要があります。

4.変更は構成データベースに書き込まれ、ISE環境全体でレプリケートされます。

5. REST認証サービスがすべてのノードで開始されます。

6. ISE管理者が、手順2の詳細を使用してREST IDストアを設定します。

7.変更は設定データベースに書き込まれ、ISE環境全体で複製されます。

8. ISE管理者が新しいIDストアシーケンスを作成するか、既存のIDストアシーケンスを変更して、認証/認可ポリシーを設定します。

9.変更は構成データベースに書き込まれ、ISE環境全体でレプリケートされます。

10.エンドポイントが認証を開始します。ROPCプロトコルの仕様に従って、暗号化されたHTTP接続を介してMicrosoft IDプラットフォームにクリアテキストでユーザパスワードを提供する必要があります。この事実により、現在ISEでサポートされている使用可能な認証オプションは次のものだけです。

- 内部方式としてパスワード認証プロトコル(PAP)を使用するExtensible Authentication Protocol-Tunneled Transport Layer Security(EAP-TTLS)

- PAPを使用したAnyConnect SSL VPN認証

11. Radius上のISEポリシーサービスノード(PSN)との交換。

12.プロセスランタイム(PrRT)は、内部APIを介して、ユーザの詳細（ユーザ名/パスワード）を含む要求をREST IDサービスに送信します。

13. REST IDサービスは、HyperText Transfer Protocol Secure (HTTPS)を介してOAuth ROPC要求をAzure ADに送信します。

14. Azure ADはユーザー認証を実行し、ユーザーグループを取得します。

15.認証/認可の結果がISEに返されます。

ポイント15の後、認証結果とフェッチされたグループがPrRTに返されます。これには、ポリシー評価フローが含まれ、最終的な認証/認可結果が割り当てられます。認可プロファイルからの属性を使用したアクセス承認(ACL)またはネットワークアクセスデバイス(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 tab.

b. Advanced settingsセクションを見つけます。

c.選択Yes for：アプリケーションをパブリッククライアントとして処理します。

d.Save をクリックして、クエリーを実行します。

10. Add group claims  アプリケーションに追加します。

図 11

a. Token configurationに移動します。

b. – を押します Add groups claim を参照。

11.追加が必要なグループ・タイプの定義

図 12.

a. Select - All groupsを選択します。

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タイプのGroupを探します。

b. Group.Read.All を参照。

c. Add permissions  をクリックして、クエリーを実行します。

注：ユーザーグループデータは、さまざまなAPIアクセス許可を使用して、さまざまな方法でAzure ADからフェッチできます。この例で説明する方法は、Cisco TACラボで成功することがわかっています。Azure AD管理者が推奨する場合は、他のAPIアクセス許可を使用します。

16. Grant admin consent  を参照してください。

図 17.

17.管理者の許可同意を確認します。

図 18.

この時点で、Azure AD側で完全に構成された統合を検討できます。

統合のためのISEの設定

1. ID管理の設定に移動します。

図 19.

移動先 Administration > Identity Management> Settings を参照。

2. REST IDサービスを有効にします（デフォルトでは無効）。

図 20.

移動先REST ID Store Settings REST IDストア設定のステータスを変更して、Enable,then Submit  変更します。

3. REST IDストアを作成します。

図 21.

次の場所に切り替えます。 External Identity Sources  タブをクリックし、 REST (ROPC)  サブタブを開いて、Addをクリックします。

4. REST IDストアを構成します。

図 22.

a. IDストア名を定義します。この名前は、後で認可ポリシーを設定するときにISEディクショナリのリストに表示されます。また、この名前は、認証ポリシー設定で使用可能なIDストアのリストと、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のデバイスオブジェクトにはUsername属性がありません。

f. ISEが提供されたアプリの詳細を使用してAzure ADとの接続を確立できることを確認するには、[接続のテスト]を押します。

g. Azure ADで使用可能なグループをREST IDストアに追加するには、[グループの読み込み]を押します。次の例は、管理エクスペリエンスの仕組みを示しています。

注:不具合Cisco Bug ID CSCvx00345はグループがロードされない原因になるので、ご注意ください。この不具合は、ISE 3.0パッチ2で修正されています。

図 23.

h.変更を送信します。

5.このステップでは、新しく作成されたREST IDストアを含む新しいIDストアシーケンスの作成を検討します。

6.認証ポリシーに割り当てられたREST IDストアまたはIDストアシーケンスが含まれている時点で、図に示すように、プロセス失敗のデフォルトアクションをDROPからREJECTに変更します。

図 24.

a. REST IDストアを使用する認証ポリシーを見つけます。

b. [オプション]ドロップダウンリストを開きます。

c. Process Failed from DROPからREJECTへのデフォルトアクションの変更

これは、次のような特定の障害がREST IDストア内で発生したときに、NAD側でデッドとマークされたPSNを回避するために必要です。

- このユーザーはAzure ADのどのグループのメンバーでもありません。

- ユーザパスワードを変更する必要があります。

7. REST IDストアディクショナリを許可ポリシーに追加します。

図 25.

a. 「すべての辞書」ドロップダウンリストを開きます。

b. REST IDストアと同じ方法で、という名前のディクショナリを検索します。

8.外部IDグループの追加（ISE 3.0の時点では、REST IDストアディクショナリで使用可能な属性は外部グループのみです）。

図 26.

さまざまな使用例のISEポリシーの例

Dot1x認証の場合、図に示すように、ネットワークアクセス辞書からのEAPトンネル条件を使用して、EAP-TTLS試行を照合できます。

図 27.

a. EAP-TTLSと同等のEAPトンネルを定義して、REST IDストアに転送する必要がある試行と一致させます。

b. REST IDストア内で直接またはIdentity Store Sequenceを選択します。これは、Use列に含まれています。

個々の承認ポリシー内では、Azure ADの外部グループをEAPトンネルタイプと共に使用できます。

図 28.

VPNベースのフローの場合は、tunnel-group名を差別化要因として使用できます。

認証ポリシー：

許可ポリシー：

図 29.

確認

このセクションでは、設定が正常に動作していることを確認します。

1. REST Auth Serviceが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.実際の認証ステップ – ここで示す遅延値に注意してください。Aure Cloudによるすべての認証で大幅な遅延が発生し、問題が生じた場合は、他のISEフローに影響が生じ、その結果、ISE展開全体が不安定になります。

d.認証の成功の確認。

ホ。回答として提示したグループデータの確認

f.ユーザグループデータが入力されたセッションコンテキスト。ISEセッション管理プロセスの詳細については、この記事のリンクを参照してください。

3. Expect Authentication/Authorizationポリシーが選択されていることを確認します（詳細な認証レポートのこの調査の概要セクションに関して）。

図 30.

トラブルシュート

このセクションでは、設定のトラブルシューティングに役立つ情報を説明します。

REST認証サービスに関する問題

REST認証サービスに関する問題をトラブルシューティングするには、まずADE.logファイルを確認する必要があります。サポートバンドルの場所：/support/adeos/ade

REST認証サービスの検索キーワードは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関連のログは、CLIで表示できるROPCファイルに保存されます。

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で、ファイル名がropc.logではなくrest-id-store.logであることに注意してください。前述の検索例は、フォルダ名が変更されていないため機能します。

または、これらのファイルをISEサポートバンドルから抽出することもできます。

次に、さまざまな動作シナリオと非動作シナリオを示すいくつかのログ例を示します。

1. Azure GraphがISEノードによって信頼されていない場合の証明書エラーです。このエラーは、グループが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がインストールされていません。これは、不具合に記載されています

- Cisco Bug ID CSCvv80297：この問題に対処するには、DigiCert Global Root G2 CAをISE信頼ストアにインストールし、シスコサービスに対して信頼できるものとしてマークする必要があります。

証明書は、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. ROPCがAzure側で許可されていない場合、認証が失敗します。

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" : [ ]

}