2016-01-21 88 views
1

我们有一个身份提供者用户注册表和一个SOAP Web服务,用于读取/写入用户配置文件的应用程序。现在我们也计划添加一个SCIM接口。SCIM 2.0的架构扩展

我们发现核心用户模式涵盖了基本的一组属性,但是我们现有的系统对于相同的属性具有不同的命名约定。

例如,说USERTELEPHONENUMBER,USERSTREETADDR1等。

考虑到大量的应用程序已经在使用这个命名约定,我们希望继续使用SCIM 2.0。

既然我们可以扩展我们可以选择不使用从核心架构的任何属性核心的用户模式,

1)?如果有效载荷包含这些属性,我们可以简单地在服务器端忽略它们,并只处理自定义模式属性?

的实例用户文件 -

{ 
     "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)我们可以定义一个新的资源本身并定义一个新的核心架构。

这些选项中哪一个会更清洁?

+0

我知道这篇文章已经发布了很久以前,但是我在为我目前的任务进行一些SCIM研究的时候跨过了它。 为什么你不创建一个扩展,将你的属性映射到标准映射? –

回答

0

如果您不打算使用核心模式,为什么要使用SCIM?

SCIM强烈建议拥有多个属性来表示相同的事物。

我建议你创建一个你的属性和SCIM核心(和企业扩展)属性之间的映射。如果有任何内容不映射到这两个模式,则应该创建一个扩展。

0

我认为您需要的是scim核心模式属性与您现有的系统属性之间的映射。正如您所说的scim核心模式和您现有的系统属性共享相同的含义,您不应该在扩展中重新定义这些属性。这强烈地受到SCIM规范气馁。(https://tools.ietf.org/html/rfc7643#section-3.3

架构扩展应该避免重新定义在 本说明书中定义的任何属性和应该遵循本 规范中定义的规范。

但是,如果您在现有系统中具有其他属性,则可以在扩展中定义它们。

如果您有像WSO2 Charon(https://docs.wso2.com/display/IS450/Implementing+SCIM+with+Charon)这样的分离式scim实现,我建议您在scim实现层下面有单独的图层,以在属性用于任何业务逻辑之前对属性进行必要的映射。但这基本上取决于您的实施。