【问题标题】:Schema extension for SCIM 2.0SCIM 2.0 的架构扩展
【发布时间】:2016-01-21 05:33:19
【问题描述】:

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

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

例如,说 USERTELEPHONENUMBER、USERSTREETADDR1 等等。

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

鉴于我们可以扩展核心用户模式,

1) 我们可以选择不使用核心模式中的任何属性吗?如果payload包含这些属性,我们是否可以在服务器端简单地忽略它们,只处理自定义模式属性?

用户文档示例 -

    {
        "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) 我们可以自己定义一个新的资源,定义一个新的核心模式。

这些选项中哪一个是更清洁的方式?

【问题讨论】:

  • 我知道这篇文章很久以前就发布过了,但我在为我目前的作业做一些 SCIM 研究时已经越过了它。为什么不创建一个扩展来公开从你的属性到标准属性的映射?

标签: schema scim


【解决方案1】:

如果您不打算使用核心架构,为什么还要使用 SCIM?

SCIM 强烈反对使用多个属性表示同一事物。

我建议您在属性和 SCIM 核心(和企业扩展)属性之间创建映射。如果有任何东西没有映射到这 2 个模式,您应该创建一个扩展。

【讨论】:

    【解决方案2】:

    我认为您需要的是 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 实现层下面有一个单独的层,以便在属性用于任何业务逻辑之前进行必要的映射。但这基本上取决于您的实现。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多