简介
本文档介绍如何为访客门户安全声明标记语言(SAML)配置思科身份服务引擎(ISE)版本2.1单点登录(SSO)功能。
先决条件
要求
Cisco 建议您了解以下主题:
- 思科身份服务引擎访客服务。
- 有关SAML SSO的基本知识。
使用的组件
本文档中的信息基于以下软件和硬件版本:
- 思科身份服务引擎版本2.1
- 从Ping身份作为SAML身份提供程序(IdP)的PingFederate 8.1.3.0服务器
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
流概述
SAML是基于XML的标准,用于在安全域之间交换身份验证和授权数据。
SAML规范定义了三个角色:主体(访客用户)、身份提供程序[IdP](IPing Federate服务器)和服务提供程序[SP](ISE)。
在典型的SAML SSO流程中,SP会请求并从IdP获取身份声明。根据此结果,ISE可以执行策略决策,因为IdP可以包括ISE可以使用的可配置属性(即与AD对象关联的组和邮件地址)。
此使用案例的预期流程
- 无线LAN控制器(WLC)或接入交换机配置为典型集中式Web身份验证(CWA)流程。
提示:在文章底部的“相关信息”部分中查找CWA流的配置示例。
2.客户端连接且会话根据ISE进行身份验证。网络接入设备(NAD)应用ISE(url-redirect-acl和url-redirect)返回的重定向属性值对(AVP)。
3.客户端打开浏览器,生成HTTP或HTTPS流量,并重定向到ISE的访客门户。
4.一旦进入门户,客户端将能够输入先前分配的访客凭证(发起人创建)并自行调配新的访客帐户或使用其AD凭证登录(员工登录),这将通过SAML提供单点登录功能。
5.用户选择“员工登录”选项后,ISE会根据IdP验证是否存在与此客户端浏览器会话关联的活动断言。如果没有活动会话,IdP将强制用户登录。在此步骤中,系统将提示用户直接在IdP门户中输入AD凭证。
6. IdP通过LDAP对用户进行身份验证,并创建一个新的断言,该断言将在可配置的时间保持活动状态。
注意:Ping联盟默认应用60分钟的会话超时(这意味着如果在初始身份验证后的60分钟内没有来自ISE的SSO登录请求,会话将被删除)和480分钟的会话最大超时(即使IdP已收到来自ISE的此用户的常量SSO登录请求,会话将在8小时后过期)。
只要断言会话仍处于活动状态,员工在使用访客门户时将体验SSO。会话超时后,IdP将执行新的用户身份验证。
配置
本节讨论将ISE与Ping Federate集成的配置步骤,以及如何为访客门户启用浏览器SSO。
注意:虽然对访客用户进行身份验证时存在各种选项和可能性,但本文档中并未介绍所有组合。但是,本示例将为您提供必要的信息,帮助您了解如何将该示例修改为要实现的精确配置。
步骤1:准备ISE以使用外部SAML身份提供程序
- 在Cisco ISE上,选择管理>身份管理>外部身份源> SAML Id提供程序。
- 单击 Add。
- 在General选项卡下,输入Id Provider Name。Click Save. 本节中的其余配置取决于后续步骤中需要从IdP导入的元数据。
第二步:将访客门户配置为使用外部身份提供程序
- 选择Work Centers > Guest Access > Configure > Guest Portals。
- 创建新门户并选择Self-Registered Guest Portal。
注:这不是用户体验的主要门户,而是与IdP交互以验证会话状态的子门户。此门户称为SOSubPortal。
3.展开Portal Settings,然后选择PingFederate 以执行身份验证。
4.从身份源序列中,选择先前定义的外部SAML IdP(PingFederate)。
5.展开Acceptable Use Policy(AUP)和Post-Login Banner Page Settings部分,并禁用这两个部分。
门户流为:
6.保存更改。
7.返回访客门户,并使用Self-Registered Guest Portal选项创建新门户。
注意:这将是对客户端可见的主门户。主门户将使用SSOSubportal作为ISE和IdP之间的接口。 此门户称为PrimaryPortal。
8. 展开Login Page Settings并选择之前在“Allow the following identity-provider guest portal to be used for login”下创建的SSOSubPortal。
9.展开Acceptable Use Policy AUP和Post-login Banner Page Settings并取消选中它们。
此时,门户流必须如下所示:
10.选择Portal Customization > Pages > Login。现在,您必须具有自定义Alternative Login Options(图标、文本等)的选项。
注意:请注意,在右侧,门户预览下方会显示其他登录选项。
11.单击Save。
现在,两个门户都显示在Guest Portal List下。
第三步:配置PingFederate作为ISE访客门户的身份提供程序
- 在ISE中,选择Administration > Identity Management > External identity Sources > SAML Id Providers > PingFederate,然后点击Service Provider Info。
- 在Export Service Provider Info下,单击Export。
3.保存并提取生成的zip文件。此处包含的XML文件用于在后续步骤中的PingFederate中创建配置文件。
注意:从此时起,本文档将介绍PingFederate配置。对于多个解决方案(如发起人门户、MyDevices和BYOD门户),此配置相同。(本文未涵盖这些解决方案)。
4.打开PingFederate管理员门户(通常为https://ip:9999/pingfederate/app)。
5.在IdP配置选项卡> SP连接部分下,选择新建。
6.在Connection Type(连接类型)下,单击Next(下一步)。
7.在“连接选项”下,单击“下一步”。
8.在导入元数据下,单击文件单选按钮,单击选择文件,然后选择之前从ISE导出的XML文件。
9.在元数据摘要下,单击下一步。
10.在General Info页面的Connection Name下,输入名称(例如ISEGuestWebAuth),然后单击Next。
11.在Browser SSO下,单击Configure Browser SSO,然后在SAML Profiles下选中选项,然后单击Next。
12.在Assertion lifetime上,单击Next。
13.在Assertion Creation中,单击Configure Assertion Creation。
14.在身份映射下,选择标准,然后单击下一步。
15.在“属性合同”>“延长合同”上,输入属性mail和memberOf,然后单击add。单击 Next。
通过配置此选项,身份提供程序可以将MemberOf和Email属性由Active Directory提供给ISE,ISE稍后可以在策略决策期间将其用作条件。
16.在Authentication Source Mapping下,单击Map New Adapter Instance。
17.在适配器实例上,选择HTML Form Adapter。单击“下一步”
18.在“映射方法”下,向下选择第二个选项,然后单击“下一步”。
19.在Attribute Sources & User Lookup上,点击Add Attribute Source框。
20.在Data Store下输入说明,然后从Active Data Store中选择LDAP连接实例,并定义此目录服务的类型。如果未配置Data Stores,请单击Manage Data Stores以添加新实例。
21.在LDAP Directory Search下,定义域中LDAP用户查找的基本DN,然后单击Next。
注意:这很重要,因为它将在LDAP用户查找期间定义基本DN。错误定义的基础DN将导致在LDAP架构中找不到对象。
22.在LDAP Filter下,添加字符串sAMAccountName=${username},然后单击Next。
23.在Attribute Contract Fulfillment下,选择给定的选项,然后单击Next。
24.在摘要部分验证配置,然后单击完成。
25.返回属性源和用户查找,单击下一步。
26.在Failsafe Attribute Source下,单击Next。
27.在Attribute Contract Fulfillment下,选择这些选项,然后单击“下一步”。
28.验证“摘要”部分中的配置,然后单击完成。
29.返回Authentication Source Mapping并单击Next。
30.在Summary页面下验证配置后,单击Done。
31.返回Assertion Creation并单击Next。
32.在Protocol Settings下,单击Configure Protocol Settings。此时必须已填充两个条目。单击 Next。
33.在SLO服务URL下,单击下一步。
34.在允许的SAML绑定上,取消选中选项ARTIFACT和SOAP,然后点击下一步。
35.在“签名策略”下,单击下一步。
36.在“加密策略”下,单击下一步。
37.查看“摘要”页面中的配置,然后单击完成。
38.返回浏览器SSO >协议设置,单击下一步,验证配置,然后单击完成。
39.系统将显示浏览器SSO选项卡。单击 Next。
40.在Credentials下,单击Configure Credentials,然后选择IdP与ISE通信期间要使用的签名证书,并选中Include the certificate in the signature选项。然后,单击下一步。
注:如果没有配置证书,请点击Manage Certificates,然后按照提示生成Self-signed certificate,用于对ISE通信的IdP进行签名。
41.验证摘要页面下的配置,然后单击完成。
42.返回凭证选项卡,单击下一步。
43. 在Activation & Summary下,选择Connection Status ACTIVE,验证其余配置,然后单击Done。
第四步:将IdP元数据导入ISE外部SAML IdP提供程序配置文件
- 在PingFederate管理控制台下,选择Server Configuration > Administrative Functions > Metadata Export。 如果服务器已配置为多个角色(IdP和SP),请选择I am the Identity Provider(IdP)选项。单击 Next。
- 在元数据模式下,选择“手动选择要包括在元数据中的信息”。单击 Next。
3.在协议下单击下一步。
4.在“属性合同”上,单击下一步。
5.在Signing Key下,选择之前在连接配置文件中配置的证书。单击 Next。
6.在Metadata Signing下,选择签名证书,并选中Include this certificate’s public key in the key info element。单击 Next。
7. 在XML加密证书下,单击下一步。
注意:此处执行加密的选项由网络管理员决定。
8.在摘要部分下,单击导出。保存生成的元数据文件,然后单击完成。
9.在ISE下,选择Administration > Identity Management > External Identity Sources > SAML Id Providers > PingFederate。
10.单击Identity Provider Config > Browse,然后继续导入从PingFederate元数据导出操作保存的元数据。
11.选择组成员属性下的组选项卡,添加memberOf,然后单击添加
在Name in Assertion下,添加从LADP身份验证检索memberOf属性时必须返回的Distinguished Name。 在这种情况下,配置的组链接到TOR的发起人组,并且此组的DN如下:
添加DN和“ISE中的名称”说明后,单击OK。
12.选择属性选项卡,然后单击添加。
在此步骤中,添加从IdP传递的SAML令牌中包含的属性“mail”,该令牌基于LDAP上的Ping查询,必须包含该对象的电子邮件属性。
注意:步骤11和12确保ISE通过IdP登录操作接收AD对象Email和MemberOf属性。
验证
- 使用门户测试URL或通过遵循CWA流程启动访客门户。用户可以选择输入访客凭证、创建自己的帐户和员工登录。
2.单击员工登录。由于没有活动会话,用户将被重定向到IdP登录门户。
3.输入AD凭证,然后单击登录。
4. IdP登录屏幕会将用户重定向到“访客门户成功”页面。
5.此时,每次用户返回访客门户并选择“Employee Login”时,只要会话在IdP中仍处于活动状态,就会允许他们进入网络。
故障排除
任何SAML身份验证问题都将记录在ise-psc.log下。Administration > Logging > Debug log Configuration > Select the node issued > Set SAML component to debug level下有一个专用组件(SAML)。
您可以通过CLI访问ISE并输入命令show logging application ise-psc.log tail并监控SAML事件,也可以下载ise-psc.log进行进一步分析,位于Operations > Troubleshoot > Download Logs > Select the ISE node > Debug Logs选项卡>单击ise-psc.log以下载日志。
2016-06-27 16:15:39,366 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAMLUtils::isOracle() - checking whether IDP URL
indicates that its OAM. IDP URL: https://10.36.147.1:9031/idp/sso.saml2
2016-06-27 16:15:39,366 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SPProviderId for PingFederate is: http://CiscoISE
/5b4c0780-2da2-11e6-a5e2-005056a15f11
2016-06-27 16:15:39,366 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- ResponseValidationContext:
IdP URI: PingFederate
SP URI: http://CiscoISE/5b4c0780-2da2-11e6-a5e2-005056a15f11
Assertion Consumer URL: https://10.36.157.210:8443/portal/SSOLoginResponse.action
Request Id: _5b4c0780-2da2-11e6-a5e2-005056a15f11_DELIMITERportalId_EQUALS5b4c0780-2da2-11e6-a5e2-005056a15f11_SEMIportalSessionId_EQUALS309f733a-99d0-4c83-8
b99-2ef6b76c1d4b_SEMI_DELIMITER10.36.157.210
Client Address: 10.0.25.62
Load Balancer: null
2016-06-27 16:15:39,366 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.BaseSignatureValidator -::::- Determine the signing certificate
2016-06-27 16:15:39,366 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.BaseSignatureValidator -::::- Validate signature to SAML standard with cert:CN=10.36.147.1, OU=TAC, O=Cisco, L=RTP, C=US serial:1465409531352
2016-06-27 16:15:39,367 DEBUG [http-bio-10.36.157.210-8443-exec-3][] org.opensaml.xml.signature.SignatureValidator -::::- Creating XMLSignature object
2016-06-27 16:15:39,367 DEBUG [http-bio-10.36.157.210-8443-exec-3][] org.opensaml.xml.signature.SignatureValidator -::::- Validating signature with signature algorithm URI: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.SAMLSignatureValidator -::::- Assertion signature validated succesfully
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating response
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.WebSSOResponseValidator -::::- Validating assertion
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Assertion issuer succesfully validated
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Subject succesfully validated
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- SAML Response: validation succeeded for guest
IDPResponse
:
IdP ID: PingFederate
Subject: guest
SAML Status Code:urn:oasis:names:tc:SAML:2.0:status:Success
SAML Success:true
SAML Status Message:null
SAML email:guest@example
SAML Exception:null
2016-06-27 16:15:39,368 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- AuthenticatePortalUser - about to call authenticateSAMLUser messageCode:null subject:guest
2016-06-27 16:15:39,375 DEBUG [http-bio-10.36.157.210-8443-exec-3][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- Authenticate SAML User - result:PASSED
相关信息