【问题标题】:OKTA Authorization Server ‘namespace’ for custom claims用于自定义声明的 OKTA 授权服务器“命名空间”
【发布时间】:2021-04-08 22:02:26
【问题描述】:

我有一个授权服务器,它很高兴根据需要返回各种“开箱即用”和自定义声明,这很棒。

后端(DGraph GraphQL 托管服务器 https://slash.dgraph.io/)需要一个“命名空间”用于我希望它使用的声明,但我的令牌中的所有声明都位于有效负载的根目录中。

我来自 Okta 的示例 JWT 有效负载是:

{
  "sub": "xxxxxxxxxxxxxxxxxxx",
  "ver": 1,
  "iss": "https://abc-1234567.okta.com/oauth2/default",
  "aud": "xxxxxxxxxxxxxxxxxxx",
  "iat": 1609590699,
  "exp": 1609594299,
  "jti": "ID.xxxxxxxxxxxxxxxxxxx",
  "amr": [
    "pwd"
  ],
  "idp": "xxxxxxxxxxxxxxxxxxx",
  "nonce": "nonce",
  "auth_time": 1000,
  "CustomClaim1": "xxxxxxxxxxxxxxxxxxx",
  "CustomClaim2": "xxxxxxxxxxxxxxxxxxx"
}

DGraph 想要的是……

{
  "sub": "xxxxxxxxxxxxxxxxxxx",
  "ver": 1,
  "iss": "https://abc-1234567.okta.com/oauth2/default",
  "aud": "xxxxxxxxxxxxxxxxxxx",
  "iat": 1609590699,
  "exp": 1609594299,
  "jti": "ID.xxxxxxxxxxxxxxxxxxx",
  "amr": [
    "pwd"
  ],
  "idp": "xxxxxxxxxxxxxxxxxxx",
  "nonce": "nonce",
  "auth_time": 1000,
  "Namespace": {
     "CustomClaim1": "xxxxxxxxxxxxxxxxxxx",
     "CustomClaim2": "xxxxxxxxxxxxxxxxxxx"
  }
}

我在写这篇文章时注意到地址范围创建了一个输出,其中实际上有一个带有声明的命名空间,这就是我所追求的

"address": {
    "street_address": "My House",
    "locality": "My Town",
    "region": "My County",
    "postal_code": "My Postcode"
  }"

如何做到这一点?!?!

【问题讨论】:

    标签: okta okta-api


    【解决方案1】:

    您需要将命名空间创建为授权服务器中的一个声明,然后将命名空间中的每个声明添加到 {} 内该声明的值内,就像您在编写 JSON 一样。

    复制粘贴简单的价值{"one":"one", "two":"two", "username": appuser.userName}

    expression language 仍将被评估,因此您可以像往常一样使用用户配置文件中的条件和值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2019-09-21
      相关资源
      最近更新 更多