使用SCIM v2.0连接到Azure
Azure AD支持通过SCIM v2.0为Azure企业应用程序提供用户和组配置。
微软还提供了关于这个主题的丰富文档:https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/user-provisioning
设置
- 第一步,是创建一个企业应用注册在Azure AD租户中。
- 点击“新的应用程序".
- 点击“创建自己的应用程序".
- 为应用程序指定一个名称,例如
SCIM配置
,选择“集成您在图库中没有找到的任何其他应用程序(非图库)”,然后点击“创建"
- 等待应用程序创建完成。
- 点击“供应,然后点击“开始".
- 选择“自动,填写表格,点击“测试连接".
- 租户URL:
https://intranet.acme.com/api/v2/scim/v2
<-intranet.acme.com
应该替换为您的内部网域。 - 秘密令牌:这是在应用程序设置->管理配置文件->管理配置文件源->下生成的(您可以在这里生成一个新的SCIM连接器和秘密令牌)
- 等待连接测试完成。您将收到一个通知,告诉您连接是否正常。
连接成功示例:
- 一切都很好,Azure AD可以与Interact的SCIM服务通信。
连接失败的例子:
- 检查域和路径是否正确。
- 检查Secret Token值并确保它是正确的。
- 一旦连接成功,点击“保存".
- 现在你将会有另外两个部分来进行配置。”映射,和设置".
- 映射-我们需要调整它们(在以下步骤中)。
- 设置-您可以添加一个电子邮件地址,其中您想从Azure AD配置失败通知(强烈推荐.)
- 点击“保存(我们将在后面的步骤中调整映射。)
- 返回到应用程序主屏幕。
映射
- 下面显示的是用于控制Provisioning设置的链接。点击“编辑属性映射".
- 为了让Provisioning请求包含Interact所需的所有信息,还需要添加一些额外的属性。
让我们从Groups开始。
(如果Mappings面板是灰色的——给它一分钟的时间来加载——它在页面上异步加载,有时它“启用”自己会非常慢。)
点击“提供Azure活动目录组".
- 在这里,您可以看到一些与将Azure AD组配置到外部系统相关的选项。
目标对象操作允许您控制是否要将创建/更新/删除事件发送到目标系统。如。如果您希望组同步到您的内部网,但不希望它们从内部网删除,如果组在Azure中已删除,只需取消选中“删除”选项。
属性映射显示用于在Azure AD中获取Group属性并将它们映射到SCIM模式的映射表。这是一个非常强大的工具,因为它允许您超越基本的数据字段映射,并允许您在将数据发送到Intranet之前使用表达式来生成逻辑表达式并转换数据。
支持的属性是您控制可以映射到哪些属性的地方。在Interact的情况下,我们支持几个特定于Interact的SCIM扩展模式,从而真正允许您利用SCIM利用内部网的功能。在这里,您可以定义在配置对象时希望Azure AD填充的额外字段。
如果您正在执行测试,最好一开始就关闭“删除”功能。
点击“编辑customappsso的属性列表".
- 现在,添加一个具有以下细节的新属性:
- 的名字:
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:组:groupType
- 类型:
字符串
- 要求:
是的
(此属性是交互自定义SCIM模式的一部分,并且是成功配置组所必需的。)
- 点击“保存,并按“确认提示”是的".
- 现在,我们将添加一个新的映射到刚刚定义的新属性。
点击“添加新映射".
- 在这里你可以指定你想要如何填充这个值,最简单的选项是以下设置:
- 映射类型:
常数
<-如果您想使groupType动态,请随意使用表达式。表达式应该产生下表中的任何SCIM值(必须是小写),以便为所提供的组类型提供动态行为。 - 恒定值:
集团
- 目标属性:
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:组:groupType
组类型 | 预期SCIM值 |
---|---|
公司 | 公司 |
部门 | 部门 |
位置 | 位置 |
安全组 | 集团 |
- 您应该在表中看到新的映射,如所示。
现在,点击"好吧,并按“确认提示”是的,以确认您的更改。
- 回到“供应”屏幕上。
- 点击“提供Azure活动目录用户".
- 这是Azure AD建议的默认映射集。请从表中删除以下属性映射(customappsso属性列名称):
- displayName
- name.formatted
- addresses[type eq "work"].streetAddress
- 地址[type eq "work"].locality
- 地址[type eq "work"].region
- addresses[type eq "work"].postalCode
- 地址[type eq "work"].country
- phoneNumbers[type eq "fax"].value
- urn: ietf:参数:scim:模式:扩展:企业:2.0:用户:employeeNumber
这些列在Interact的模式中不受支持。
- 建议:使用粒度地址字段,将完整地址连接到单个值
地址[type eq "work"].格式化
,以便完整地址在配置时使其成为交互。
- 删除完成后,表应该如下所示。我们强烈建议用户映射字段使用这种方法电子邮件[type eq "work"].value,则将其切换为匹配优先级为2。这样,在Interact中创建新用户之前,它将检查用户名和主电子邮件地址。
现在我们需要添加缺少的必需的交互属性。
点击“编辑customappsso的属性列表".
- 添加以下新属性:
的名字 | 类型 |
---|---|
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:用户:位置 |
字符串 |
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:用户:loginType |
字符串 |
确保删除任何前导或后面的空白
一旦添加,点击“保存”,然后按“是的在提示中。
- 点击“添加新映射"
- 添加如下3个映射:
映射类型 | 恒定值/源属性 | 目标属性 |
---|---|---|
常数 (如果您想从另一个字段或表达式加载此值,请随意使用直接映射或表达式) |
ACME (这是你的机构名称) |
urn: ietf:参数:scim:模式:扩展:企业:2.0:用户:组织 |
直接 (如果您想从另一个字段或表达式加载此值,请随意使用表达式) |
源属性:城市 (请随意使用与您的组织相关的更合适的字段。) |
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:用户:位置 |
常数 (如果您想从另一个字段或表达式加载此值,请随意使用直接映射或表达式) |
SAML (其他有效选项为“本地登录”或“Windows登录”) |
urn: ietf:参数:scim:模式:扩展:interactsoftware: 2.0:用户:loginType |
点击“保存,然后点击“是的在提示符中确认更改。
注意:值得注意的是,这是添加更多交互字段的过程,这些字段超出了Provisioning工作所需的最小映射——这可能包括:
- Interact支持的概要文件字段的扩展列表。
- 您在交互实例中声明的其他字段。
等。
可以通过调用下面的模式发现端点来加载交互式站点上支持的字段的完整列表。
https://developer.interactsoftware.com/docs/scim-v20#supported-schemas
(不幸的是,虽然Interact支持自动模式发现,但Azure AD Provisioning不支持,这需要手动输入新受支持的属性。)
- 回到应用程序页面。
选择同步的用户和组
有两种方法可以指定将哪些用户和组同步到您的Intranet。
- 仅分配用户和组
- 所有用户和组。
所有用户和组
- 点击“添加范围过滤器”
- 更改“范围到“同步所有用户和组”。点击“保存”,然后回到应用程序页面。
(如果下拉菜单不存在,等待一分钟,直到Mappings面板加载—这两个选项是异步加载的,看起来可能会延迟。)
仅分配用户和组
- 点击“用户和组,然后按“添加用户/组".
- 使用提供的搜索功能查找要选择的用户和组。
选择所需的用户和组。
完成后,点击“选择".
- 点击“分配".
- 您现在应该看到在“用户和组”表。
使配置
现在所有的设置都已经完成,我们已经准备好启用配置了。
- 在“供应"应用程序页面,点击"开始供应".
- 一旦供应完成,您将看到这个的状态(和任何错误)。供应”页面。
(示例截图如下所示)
故障排除
确保充分利用配置日志Azure AD提供。
Interact的SCIM实现被设计得非常冗长,并提供了所有错误的必要上下文,以确保您拥有解决任何问题所需的一切。
您可以通过打开浏览器并使用以下命令来检查SCIM服务是否正常https:// {yourURL} / api / v2 / scim / v2 /健康.如果你收到类似这样的错误,你可能想检查一下:
错误码:SystemForCrossDomainIdentityManagementCredentialValidationUnavailable
返回一个HTTP/404 Not Found响应,而不是预期的HTTP/200 OK响应。错误将提到特定属性的问题。如。
- 属性X的错误值类型
- 缺少Y属性
- 属性Z中的值不符合要求的格式(.....)
- 等。
如果在测试此功能时,管理器同步功能没有工作,则需要确保在Azure中,管理器是正在同步的用户的一部分。管理器信息的协调必须发生在Azure端,而不是在Interact中……所以经理必须是Azure配置的一部分。
Azure AD SCIM支持的已知限制
供应:
- 组。使用Azure AD Premium许可计划,您可以使用组来分配对SaaS应用程序的访问权。然后,当配置范围设置为仅同步分配的用户和组时,Azure AD配置服务将根据用户是否是分配给应用程序的组的成员来分配或取消分配用户。除非应用程序支持组对象,否则不提供组对象本身。确保分配给应用程序的组将“SecurityEnabled”属性设置为“True”。
- 动态组。Azure AD用户发放服务可以在动态组中读取和发放用户。请记住以下注意事项和建议:
- 动态组会影响从Azure AD到SaaS应用程序的端到端供应的性能。
- 在SaaS应用程序中为动态组中的用户提供或取消提供的速度取决于动态组评估成员更改的速度。有关如何检查动态组的处理状态的信息,请参见检查成员规则的处理状态。
- 当用户失去动态组中的成员资格时,将视为取消配置事件。在为动态组创建规则时,请考虑此场景。
- 嵌套组。Azure AD用户发放服务不能在嵌套组中读取或发放用户。该服务只能读取和提供显式分配的组的直接成员的用户。这种“基于组的应用程序分配”的限制也会影响单点登录(参见使用组管理对SaaS应用程序的访问)。相反,直接在包含需要提供的用户的组中分配或以其他方式分配范围。
- 在Interact内部不能有在字段名中有问号(即?)的附加字段,否则流程将无法工作。当您试图在SCIM中执行任何活动时,将收到Error 500,直到问题得到解决。您需要完全删除该字段并重新创建它,不带问号。
- 如果项目为空,Azure将不会将其推送到interaction。因此,它有效地使用类似于Interact的“ApplyBlank”逻辑的所有字段。“默认值”字段只对初始同步有效,但对后续同步没有帮助。在处理必填字段时,这会导致一个问题。如果你想强制一个字段不为空,或者强制它同步尽管值为空,你可以从“直接”字段映射类型切换到“表达式”,并使用以下(作为示例):Coalesce([othermail], " ")参考文章:
https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/functions-for-customizing-application-data
https://docs.microsoft.com/en-us/answers/questions/208948/user-provisioning-skipped-when-removing-user39s-at.html
https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/known-issues - 如果遇到Power User权限被删除的问题,则需要对以下配置进行更改:对于User映射字段电子邮件[type eq "work"].value,则需要将“Match objects using this attribute”设置为yes,并将“Matching precedence”设置为2。如果您已经运行了同步并删除了“高级用户”访问,则需要手动为用户重新添加此权限。
- 如果您正在通过交互内部的管理概要文件源从使用Azure迁移到通过SCIM的Azure,并且您在交互系统中有现有用户,您不希望以错误的方式删除或更改用户,那么您需要首先从Azure收集以下信息:
mailNickName
userPrincipalName
邮件
givenName
姓
EntityID(或UID) - 然后,您需要将该信息与Interact中的以下字段进行比较:
用户名
UID
电子邮件
第一个名字
姓 - 如果你不希望对现有用户造成干扰,你需要在执行第一次同步之前,将Azure中的正确值映射到交互中的字段(即在管理配置文件源中如何在Azure中完成)。
- 你需要非常小心地使用Azure的映射类型“常量”。如果您将一个常量映射到像Organization这样的字段,它最初会按照您的意图设置该值;然而,如果您允许用户手动更新他们的组织,这将会工作,除非您有机会重新启动供应过程。如果发生这种情况,您可能会丢失用户对Organization字段所做的所有手动调整,因为常数可能会再次被推。更好的解决方案是使用映射类型“None”并设置一个默认值。下面是微软对“None”类型的描述:“None -目标属性未被修改。但是,如果目标属性为空,则会使用您指定的默认值填充它。”这正是大多数客户想要的……不是一个总是这样的硬编码值,而是一个初始默认值,您希望用户在初始同步后进行调整。总的来说,要小心Azure映射中的常量,特别是当你从UMI迁移到SCIM并且有现有用户时…… this "None" option is the best way to handle default values when the data doesn't exist in Azure.
- 当您需要映射到jobStartDate字段时,您的数据通常不存在Interact期望的RFC3339格式。例如:您在Azure中的字段是“M/d/yyyy”或“MM/dd/yyyy”格式,但您需要Interact的“yyyy-MM- ddthh: MM:ssZ”格式。你可以用这个表达式来处理它:FormatDateTime([extensionAttribute8],, "M/d/yyyy", "yyyy- mm - ddthh:mm:ssZ").如果格式不同,如MM/dd/yyyy,只需在适当的区域替换它。请记住,零很重要,所以一定要真正理解单个数字月份或日期的前导是否为零。
- Azure中有许多表达式可以帮助格式化数据。看到https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/functions-for-customizing-application-data更多细节。经常请求的表达式用于连接值。使用带分隔符“”的JOIN命令。
- 组。使用Azure AD Premium许可计划,您可以使用组来分配对SaaS应用程序的访问权。然后,当配置范围设置为仅同步分配的用户和组时,Azure AD配置服务将根据用户是否是分配给应用程序的组的成员来分配或取消分配用户。除非应用程序支持组对象,否则不提供组对象本身。确保分配给应用程序的组将“SecurityEnabled”属性设置为“True”。
资源供应:
- 如果之前由供应服务管理的用户从应用程序中取消分配,或者从分配给应用程序的组中取消分配,我们将发送禁用请求。此时,用户不再受服务管理,当用户从目录中删除时,我们将不会发送删除请求。
- 不支持配置在Azure AD中禁用的用户。在提供它们之前,它们必须在Azure AD中处于活动状态。
- 当用户从软删除变为活动时,Azure AD配置服务将在目标应用程序中激活该用户,但不会自动恢复组成员身份。目标应用程序应该为处于非活动状态的用户维护组成员关系。如果目标应用程序不支持这一点,您可以重新启动供应以更新组成员。
源(https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/how-provisioning-works#provisioning-using-scim-20) - 微软关于SCIM去配置的说法如下:
对于红色箭头,它基本上是说如果你软删除,Azure在30天内不会向Interact发送通知。但与此同时,该用户无法登录,因为SSO应用程序不再支持该用户。30天后,Azure通过向交互发送DELETE命令来清除交互许可问题(因此用户被灭活)。此解决方案解决了交互许可问题(因为30天后许可证由未激活的用户释放)和用户无法登录(由于单点登录);然而,我们发现许多客户不喜欢这个解决方案,因为1)他们雷竞技rat不想等待30天用户从交互中删除,2)理论上用户可以登录到我们的应用程序(尽管这不能发生,因为SSO不会为用户工作……即使他们尝试在本地登录,该帐户也可能是SAML设置的,并且没有本地凭据)。
对于黄色箭头,这不是一个理想的解决方案,但它可以工作,并且SCIM向Interact发送DELETE命令。因此用户将立即从Interact中删除。
对于紫色箭头,不要很快跳过这个。微软非常精明地表示,如果您从Azure SCIM应用程序中删除用户,它将发送DELETE命令。他们没有告诉你的是,大多数公司不会把个人用户放到Azure SCIM应用程序中,他们会注册一个组(比如Everyone组、Interact users等),从Azure SCIM应用程序的组中删除用户不会触发DELETE命令。
如果您关心如何取消配置,我们建议您向微软提交罚单。
有关Azure AD供应功能中的错误和已知问题的更多信息,可以在这里找到:
https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/known-issues
更新 5个月前