我们有一个身份提供者用户注册表,以及一个供应用程序读/写用户配置文件的SOAP Web服务。现在我们还计划添加一个SCIM接口。
我们发现Core User模式涵盖了基本的属性集,但是我们现有的系统对相同的属性有不同的命名约定。
例如,USERTELEPHONENUMBER、USERSTREETADDR1等。
考虑到大量已经使用此命名约定的应用程序,我们希望在SCIM 2.0中继续使用此命名约定。
假设我们可以扩展Core User模式,
1)我们可以选择不使用Core模式中的任何属性吗?如果有效负载包含这些属性,我们是否可以简单地在服务器端忽略它们,而只处理自定义模式属性?
一个示例用户文档-
{
"schemas": [ "urn:scim:schemas:core:2.0:User",
urn:scim:schemas:extension:customattrs:2.0:User"],
"id": "2819c223-7f76-453a-919d-413861904646",
"urn:scim:schemas:extension:customattrs:2.0:User": {
"USERFIRSTNAME": "fname",
"USERLASTNAME": "lname",
"USERTELEPHONENUMBER": "1231231234
}
}2)我们可以定义一个新的资源本身,并定义一个新的核心模式。
这些选项中哪一个是更干净的方式?
发布于 2016-03-23 15:09:56
如果您不打算使用核心模式,为什么要使用SCIM呢?
SCIM强烈建议您使用多个属性来表示相同的内容。
我建议您在您的属性和SCIM核心(和企业扩展)属性之间创建一个映射。如果有任何东西没有映射到这两个模式,您应该创建一个扩展。
发布于 2017-01-03 00:24:33
我认为您需要的是scim核心模式属性和现有系统属性之间的映射。正如您所说的,scim核心模式和您现有的系统属性具有相同的含义,因此您不应该在扩展中重新定义这些属性。这是scim规范强烈反对的。(https://www.rfc-editor.org/rfc/rfc7643#section-3.3)
模式扩展应该避免重新定义本规范中定义的任何属性,并且应该遵循本规范中定义的约定。
但是,如果您在现有系统中有其他属性,则可以在扩展中定义它们。
如果您有像WSO2 Charon (https://docs.wso2.com/display/IS450/Implementing+SCIM+with+Charon)这样的解耦的scim实现,我建议您在scim实现层下面有一个单独的层,以便在将属性用于任何业务逻辑之前对属性进行必要的映射。但这基本上取决于您的实现。
https://stackoverflow.com/questions/34916097
复制相似问题