本页内容
有关 SSO 的常见问题
获取有关 Mist 的 SSO 实施、要求、配置等常见问题的解答。
问:我应该了解哪些 Mist SSO 实施的基础知识?
答:Mist 在我们产品的多个部分支持基于 SAML2.0 的 SSO,但实现方式相同。虽然本文档是为管理员 SSO 编写的,但我们还支持访客访问的 SSO,以及 PPSK 自主配置,其中实施相同,但强制属性除外。因此,本文档可以应用于 Mist 的所有 SSO。
Mist 中的用户帐户可以是三种类型的帐户之一,具体取决于其向 Mist 进行身份验证的方式;作为 Mist 的本地帐户,以及 SSO 帐户或 OAUTH2 帐户。帐户只能是这些类型之一。因此,SSO 帐户将始终通过 IdP 向 Mist 进行身份验证(除非用户更改其帐户类型)。
确保对 IdP 断言和响应进行签名,并在断言中返回正确的属性,并使用正确的属性名称大小写。
问:Mist 支持哪些 IdP 进行 SSO 访问?
答:Mist 支持任何支持 SAML2.0 的 IdP。
问:Mist 是否支持 SP 和 IdP 发起的 SSO?
答:是的,Mist 支持 SP 和 IdP 发起的 SSO。但需要注意的是,SSO 用户首次登录 Mist 时必须由 IdP 发起。另请注意,对于 SP 发起的登录,在 IdP 中输入的实体 ID 必须与 ACS URL 相同。
问:我需要在断言中发送哪些属性?
答:以下是 Mist 在 SAML 断言中期望的属性:
请注意,大小写很重要。
- 姓名 ID
- 角色
- 名字
- 姓氏
NameID 为必填项。除非通过 API 进行配置default_role,否则需要角色。推荐使用 FirstName 和 LastName,否则您会看到 ? ?作为用户的名字和姓氏。
问:你们支持哪些 NameID 格式?
答:NameID 用作用户的唯一标识符。我们支持电子邮件和未指定。大多数人都会使用电子邮件,但只要在 Mist SSO 配置中进行未指定配置,您就可以发送任何内容。如果您使用未指定,您可以向我们发送几乎任何内容,只要它是唯一且一致的。您将看到我们为 Mist 中的用户生成一个未指定的唯一 ID。
问:角色有什么用?
答:角色用于派生应授予用户的权限。断言中返回的角色将与“组织设置”页面上 Mist SSO 角色配置中的角色匹配。请注意,用户权限是每次 SSO 登录时动态生成的。
问:是否可以为用户返回多个角色?
答:是的,如果返回并匹配多个角色,我们将采用权限的超集。请注意,默认情况下,所有角色都必须匹配,否则将拒绝访问用户。要允许部分匹配角色,ignore_unmatched_roles有一个 API 选项。或者,当没有匹配的角色时,还有一个 API 选项default_role。
我们在断言中接受各种格式的多个角色。多个角色可以以逗号分隔、多个 AttributeValue 对或 CN 解析的形式发送。这里有几个例子:
以逗号分隔的“Role”属性
<Attribute Name="Role">
<AttributeValue>"Employee,Mist,Developer"</AttributeValue>
</Attribute>
# 解析的角色列表
['Employee', 'Mist', 'Developer']
多个“角色”属性值对
<Attribute Name="Role">
<AttributeValue>"Employee"</AttributeValue>
<AttributeValue>"Mist"</AttributeValue>
<AttributeValue>"Developer"</AttributeValue>
</Attribute>
# 解析的角色列表
['Employee', 'Mist', 'Developer']
逗号分隔和多个 AV 对的组合
<Attribute Name="Role">
<AttributeValue>"Employee,Mist"</AttributeValue>
<AttributeValue>"Developer"</AttributeValue>
</Attribute>
# 解析的角色列表
['Employee,Mist', 'Developer']
CN 提取示例 – “role_attr_extraction”: “CN”,
<saml2:Attribute ="Role">
<saml2:AttributeValue>CN=Employee,OU=groups,OU=ou1,OU=ou2</saml2:AttributeValue>
<saml2:AttributeValue>CN=Mist,OU=groups,OU=ou1,OU=ou2</saml2:AttributeValue>
<saml2:AttributeValue>CN=Developer,OU=ou1,OU=ou2</saml2:AttributeValue>
</saml2:Attribute>
# 解析的角色列表
['Employee’, ‘Mist', 'Developer']
问:如何排除 SSO 故障?
答:可以通过发出以下 API 调用来查看失败: {api_端点}/api/v1/orgs/:{org_id}/ssos/:{sso_id}/failures
您将看到失败原因以及收到的断言。
要发出 API 调用,您需要将斜体括号中的术语替换为实际值。
-
{api_端点}
如果您不确定贵组织的 API 端点 URL,可以从瞻博网络 Mist 门户 URL 中获取该 URL。门户 URL 以 manage 开头。相应的 API 端点 URL 将 manage 替换为 api。请注意以下示例中的粗体字符。
门户 URL
manage.ac2.mist.com/admin/?org_id=xxxxxxx-xxxx-xxx
对应的 API 端点 URL
api.ac2.mist.com/admin/?org_id=xxxxxxx-xxxx-xxx
-
{org_id}
您还可以在瞻博网络 Mist 门户 URL 中找到您的组织 ID。ID 显示在字符 org_id= 之后。请注意以下示例中的粗体字符。
门户 URL 中的组织 ID
manage.ac2.mist.com/admin/?org_id=12345678-1A2B-3456CDEF-XYZ123
- {sso_id}
要查找您的SSO ID,请发出此 API 调用: {api_端点}/api/v1/orgs/:{org_id}/ssos
查看 ID 字段以找到您的 SSO ID。
问:是否需要在 Mist 中手动配置 SSO 用户?
答:不,你没有。您的 IdP 根据需要授予 SSO 用户的访问权限。也就是说,SSO 用户由 IdP 进行身份验证,而不是由 Mist 进行身份验证。对 Mist 仪表板的访问级别由断言中返回的角色属性控制,该属性与 Mist 中定义的角色匹配。
问:我的 SSO 用户的首次登录流程是怎样的?
为您的 SSO 用户提供您的 Mist 组织的 SSO URL,以便首次登录。此步骤仅对于首次登录时才需要,才能将帐户建立为 SSO 帐户。之后,他们可以使用SSO URL 或直接转到瞻博网络Mist门户 (manage.mist.com)。有关使用 SSO 进行用户设置的详细信息,请参阅 添加标识提供者和用户。
问:如何知道哪些 SSO 用户访问了我的组织?
答:您可以检查“组织”选项卡下的“审核日志”。你会看到类似于以下内容的日志: Austin Powers austin@groovy.com Login with role “Groove-Master”
问:Mist 是否有元数据文件?
答:是的,可以在 /api/v1/orgs/:org_id/ssos/:sso_id/metadata 或 /metadata.xml 找到。
例如:
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://saml-x6qlonl8.mist.com" validUntil="2032-03-29T00:44:08.503310+00:00"> <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://api.mist.com/api/v1/saml/x6qlonl8/logout"/> <md:NameIDFormat> urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified </md:NameIDFormat> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://api.mist.com/api/v1/saml/x6qlonl8/login" index="0" isDefault="true"/> <md:AttributeConsumingService index="0"> <md:ServiceName xml:lang="en-US">Mist</md:ServiceName> <md:RequestedAttribute Name="Role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" isRequired="true"/> <md:RequestedAttribute Name="FirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" isRequired="false"/> <md:RequestedAttribute Name="LastName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" isRequired="false"/> </md:AttributeConsumingService> </md:SPSSODescriptor> </md:EntityDescriptor>
问:我的组织中需要多个 SSO。Mist 支持吗?
答:是的,一点没错。支持组织内的多个 SSO。请记住,虽然一个组织可以拥有多个 SSO,并且一个用户可以拥有多个组织的权限,但 Mist 中的 SSO 用户只能“属于”一个 SSO。当您拥有“开发”和“生产”SSO 并对两者使用相同的电子邮件时,这通常最相关。
问:我有多个组织,我可以将 SSO 用于多个组织吗?
答:是的,这也是可能的。它可以通过两种方式处理。首先,你有一个“主”组织,你在其中有 SSO。然后,您可以手动邀请用户加入您的第二个组织。当他们登录时,他们会看到两个组织都列出了。第二种方法是使用我们的 MSP 功能(这是一种受控访问功能)。如果将 SSO 放置在 MSP 级别并根据返回的角色,用户将有权访问 MSP,或者仅有权访问 MSP 中的特定组织。
问:删除 Mist 中的 SSO 会怎样?
答:当您删除 SSO 时,它会自动删除 Mist 中与该 SSO 关联的所有用户帐户。这在从一个SSO迁移到另一个时特别有用,例如“开发”迁移到“生产”。
问:API 令牌如何与 SSO 用户配合使用?
答:SSO 用户可以使用组织 API 令牌。超级用户可以创建具有必要权限的组织 API。SSO 用户不支持“基于用户”的 API 令牌。或者,也可以根据客户偏好使用本地服务帐户。
问:Mist 中是否需要本地用户?
答:开始使用 SSO 后,您可以删除之前在 Mist 中创建的任何本地用户帐户,但一个帐户除外。建议保留具有超级用户角色的本地用户,以确保在 SSO 出现问题时不会被锁定在组织之外。由于一个人不能同时将一个电子邮件地址用于 SSO 和本地帐户,因此应使用与他们将用于 SSO 的电子邮件地址不同的电子邮件地址来设置本地帐户。例如,为本地帐户使用个人电子邮件地址,为 SSO 帐户使用工作电子邮件地址。有关设置 SSO 用户的步骤的更多信息,请参阅 添加身份提供者和用户。
问:为什么在设置 SSO 时会看到证书不匹配错误?
当 Mist 中配置的身份提供程序 (IdP) 证书与 IdP 用于签署 SAML 断言的证书不匹配时,通常会出现证书不匹配错误,从而导致身份验证失败。此错误通常是由于证书信息丢失、证书过期、证书不正确或 IdP 中的多个证书引起的。要解决此问题,请执行以下作:
- 从 IdP 下载正确的证书,并确保其中包含带有页眉和页脚的全文。
- 确认证书有效。如果证书已过期,请在 IdP 门户中生成新证书,并在 Mist 门户中更新详细信息。
-
确认 IdP 是否颁发了新的证书,并在 Mist 门户中更新最新的证书信息。
此外,在 Mist 中至少维护一个本地管理员帐户也很重要。如果 SSO 由于证书相关问题而失败,这可以确保替代访问。
问:为什么通过 IdP 进行身份验证时,本地帐户无法转换为 SSO 帐户?
当您设置单点登录 (SSO) 并且用户通过身份提供商 (IdP) 登录时,Mist 会自动将用户帐户从本地帐户转换为 SSO 帐户。但是,如果出现以下情况,则不会发生此转换
-
IdP 断言中的电子邮件地址与 Mist 中用户帐户的电子邮件地址不完全匹配。
-
IdP 未向 Mist 发送正确的属性(例如名称、ID 或电子邮件地址)以供用户识别。
-
同一电子邮件地址绑定到另一个组织中的 SSO 帐户。
-
本地用户的角色未正确映射到 SSO 角色。