本页内容
SSO 常见问题
获取有关 Mist 的 SSO 实施、要求、配置等常见问题的解答。
问:我应该了解 Mist 的 SSO 实现有哪些基础知识?
答:Mist 在我们产品的多个部分支持基于 SAML2.0 的 SSO,并且实现相同。虽然本文档是为管理员 SSO 编写的,但我们还支持用于访客访问的 SSO,以及实现相同的 PPSK 自行配置,但必需属性除外。因此,本文档可以应用于 Mist 的所有 SSO。
Mist 中的用户帐户可以是三种类型的帐户之一,具体取决于它对Mist进行身份验证的方式;作为本地帐户进行Mist、SSO 帐户或 OAUTH2 帐户。帐户只能是其中一种类型。因此,SSO 帐户将始终通过 IdP 向Mist进行身份验证(除非用户更改其帐户类型)。
请确保对 IdP 断言和响应进行签名,并在断言中返回正确的属性,并将属性名称正确大写。
问:Mist SSO 访问支持哪些 IdP?
答: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 配置中配置未指定,您就可以发送任何内容。如果您使用 unspecified,您可以向我们发送大多数内容,只要它是唯一且一致的。您将看到我们为用户生成一个唯一的 ID,Mist未指定。
问:角色有什么用途?
答:角色用于派生应授予用户的权限。断言中返回的角色将与“组织设置”页上Mist SSO 角色配置中的“角色”匹配。请注意,用户权限是在每次登录 SSO 时动态生成的。
问:是否可以为一个用户返回多个角色?
答:是的,如果返回并匹配了多个角色,我们将获取权限的超集。请注意,默认情况下必须匹配所有角色,否则用户将被拒绝访问。为了允许角色的部分匹配,有一个 API 选项ignore_unmatched_roles。或者,当没有匹配的角色时,还有一个 API 选项default_role。
我们在断言中接受各种格式的多个角色。多个角色可以作为逗号分隔、多个 AttributeValue 对或使用 CN 解析发送。以下是一些示例:
逗号分隔的“角色”属性
<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_endpoint}/api/v1/orgs/:{org_id}/ssos/:{sso_id}/failures
您将看到失败原因以及收到的断言。
要发出 API 调用,您需要将斜体括号中的术语替换为实际值。
-
{api_endpoint}
如果您不确定组织的 API 终端节点 URL,可以从Juniper 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}
您还可以在Juniper 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_endpoint}/api/v1/orgs/:{org_id}/ssos
在 ID 字段中查找你的 SSO ID。
问:是否需要在 Mist 中手动预配 SSO 用户?
答:不,你不知道。SSO 用户的访问权限由 IdP 按需授予。也就是说,SSO 用户由 IdP 进行身份验证,而不是 Mist。对 Mist 仪表板的访问级别由与Mist中定义的角色匹配的断言中返回的角色属性控制。
问:SSO 用户的首次登录流程是怎样的?
向 SSO 用户提供Mist组织的 SSO URL,以便首次登录。此步骤仅在首次登录时是必需的,以便将帐户建立为 SSO 帐户。之后,他们可以使用 SSO URL 或直接转到Juniper Mist门户 (manage.mist.com)。有关使用 SSO 进行用户设置的详细信息,请参阅 添加标识提供者和用户。
问:如何知道哪些 SSO 用户访问了我的组织?
答:您可以查看“组织”选项卡下的“审核日志”。您将看到类似以下内容的日志: Austin Powers austin@groovy.com 使用角色“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 迁移到另一个 SSO(例如“dev”到“production”)时特别有用。
问:API 令牌如何与 SSO 用户配合使用?
答:SSO 用户可以使用组织 API 令牌。超级用户可以创建具有必要权限的组织 API。SSO 用户不支持“基于用户”的 API 令牌。或者,也可以根据客户偏好使用本地服务帐户。
问:我是否需要Mist内的本地用户?
答:开始使用 SSO 时,可以在 Mist 中删除以前创建的任何本地用户帐户,但一个帐户除外。建议保留一个具有超级用户角色的本地用户,以确保在 SSO 出现问题时不会被锁定在组织之外。由于用户不能同时将一个电子邮件地址用于 SSO 和本地帐户,因此本地帐户应使用与 SSO 一起使用的电子邮件地址不同的电子邮件地址进行设置。例如,对本地帐户使用个人电子邮件地址,对 SSO 帐户使用工作电子邮件地址。有关设置 SSO 用户的步骤的详细信息,请参阅 添加标识提供者和用户。