此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍通过REST身份服务和资源所有者密码凭据实现的Cisco ISE 3.0与Azure AD的集成。
本文档介绍如何配置身份服务引擎(ISE)3.0与通过具象状态传输(REST)身份(ID)服务在资源所有者密码凭证(ROPC)的帮助下实施的Microsoft(MS)Azure Active Directory(AD)的集成并对其进行故障排除。
Cisco 建议您具有以下主题的基础知识:
ISE
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
ISE REST ID功能基于ISE 3.0 - REST身份验证服务中引入的新服务。此服务负责与Azure AD over Open Authorization(OAuth)ROPC交换进行通信,以便执行用户身份验证和组检索。默认情况下禁用REST身份验证服务,在管理员启用该服务后,它将在部署中的所有ISE节点上运行。因为,在用户身份验证时与云进行REST身份验证服务通信,路径上的任何延迟都会导致身份验证/授权流出现额外延迟。此延迟不在ISE控制范围之内,必须仔细规划和测试REST身份验证的任何实施,以避免影响其他ISE服务。
1. Azure云管理员创建新的应用程序(应用)注册。此应用的详细信息稍后将在ISE上使用,以便与Azure AD建立连接。
2. Azure云管理员必须使用以下设置配置应用:
3. ISE管理员启用REST身份验证服务。在执行任何其他操作之前,必须先完成此操作。
4.将更改写入配置数据库并在整个ISE部署中复制。
5.在所有节点上启动REST身份验证服务。
6. ISE管理员使用步骤2中的详细信息配置REST ID存储。
7.将更改写入配置数据库并在整个ISE部署中复制。
8. ISE管理员创建新的身份库序列或修改已有的身份库序列并配置身份验证/授权策略。
9.将更改写入配置数据库并在整个ISE部署中复制。
10.终端发起身份验证。根据ROPC协议规范,用户密码必须通过加密HTTP连接以明文形式提供Microsoft身份平台;因此,到目前为止,ISE支持的唯一可用身份验证选项为:
11.通过Radius与ISE策略服务节点(PSN)交换。
12. Process Runtime(PrRT)通过内部API向REST ID服务发送包含用户详细信息(用户名/密码)的请求。
13. REST ID服务将OAuth ROPC请求发送到Azure AD over HyperText Transfer Protocol Secure(HTTPS)。
14. Azure AD执行用户身份验证并获取用户组。
15.向ISE返回身份验证/授权结果。
在点15之后,身份验证结果和获取的组返回到PrRT,其中涉及策略评估流程并分配最终身份验证/授权结果。Access-Accept with attributes from the authorization profile或Access-Reject returned to Network Access Device(NAD)。
1.查找AppRegistration Service(如图所示)。
图 2.
a.在全局搜索栏中键入AppRegistration。
b.点击App registration服务。
2.创建新的应用注册。
图 3.
3.注册新应用。
图 4.
a.定义应用的名称。
b.定义哪些帐户可以使用新应用程序。
c.按“注册”按钮。
4.导航到证书和密钥。
图 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.选择forYes
— 将应用程序视为公共客户端。
d.单击 按钮。Save
10.Add group claims
到App。
图 11
a.导航到Token configuration。
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实验中证明是成功的。使用其他API权限,以备您的Azure AD管理员建议使用。
16.Grant admin consent
API权限。
图 17.
17.确认管理员的授权同意。
图 18.
此时,您可以考虑在Azure AD端完全配置集成。
1.导航至“身份管理”设置。
图 19.
导航至Administration > Identity Management> Settings
。
2.启用REST ID服务(默认情况下禁用)。
图 20.
导航至REST ID Store Settings
“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无法定位用户。用户名Sufix是添加到用户提供的用户名的值,以便将该用户名设置为UPN格式。
注意:ROPC限于用户身份验证,因为它在身份验证期间依赖用户名属性。Azure AD中的设备对象没有用户名属性。
f.按测试连接以确认ISE可以使用提供的应用详细信息与Azure AD建立连接。
g.按“加载组”以将Azure AD中的可用组添加到REST ID存储中。此处的示例显示了管理员体验的样子。
注意:请注意Cisco Bug ID CSCvx00345的缺陷,因为它会导致组无法加载。该缺陷在ISE 3.0补丁2中修复。
图 23.
h.提交您的更改。
5.在此步骤中,考虑创建新的身份库序列,其中包括新创建的REST ID库。
6.当REST ID存储或包含其的Identity Store序列分配给身份验证策略时,如图所示,将Process Failure的默认操作从DROP更改为REJECT。
图 24.
a.找到使用REST ID存储的身份验证策略。
b.打开“选项”下拉列表。
c. Process Failed的更改默认操作从DROP更改为REJECT。
当REST ID存储中发生以下特定故障时,为了避免在NAD端上标记为停用的PSN,需要执行此操作:
7.将REST ID存储词典添加到授权策略。
图 25.
a.打开“所有字典”下拉列表。
b.使用与REST ID存储相同的方式找到名为的词典。
8.添加外部身份组(自ISE 3.0起,REST ID存储词典中唯一可用的属性是外部组)。
图 26.
在Dot1x身份验证的情况下,来自网络访问字典的EAP隧道条件可用于匹配EAP-TTLS尝试,如图所示。
图 27.
a.定义EAP隧道等于EAP-TTLS以匹配需要转发到REST ID存储的尝试。
b.在REST ID存储中直接选择,或者在“使用”列中包含身份存储序列。
在单个授权策略内部,来自Azure AD的外部组可以与EAP隧道类型一起使用:
图 28.
对于基于VPN的流量,您可以使用隧道组名称作为区分因素:
验证策略:
授权策略:
图 29.
使用本部分可确认配置能否正常运行。
1.确认REST身份验证服务在ISE节点上运行。
要检查此项,需要在目标ISE节点的Secure Shell(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身份验证服务的所有问题,您需要首先查看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存储时身份验证失败,则始终需要从详细的身份验证报告开始。在“其他属性”区域中,您可以看到包含由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. 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要解决此问题,您需要在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" : [ ]
}
版本 | 发布日期 | 备注 |
---|---|---|
2.0 |
10-Jan-2023 |
重新认证 |
1.0 |
27-Oct-2020 |
初始版本 |