如何在 openid 连接中将 subject(sub) 替换为 id_token 中的秘密字符串?

how to replace subject(sub) to a secret string in id_token at the openid connect?

oauth2 库:

https://github.com/Filsh/yii2-oauth2-server

https://github.com/bshaffer/oauth2-server-php

请注意,我系统中的用户 ID 是整数而不是字符串。

我的目的只是隐藏系统用户 ID。

id token 的步骤:

http://bshaffer.github.io/oauth2-server-php-docs/overview/openid-connect/

{ "iss": "localhost", "sub": 2, "aud": "-7IloKCawcvBwRijJeo7nsLxx1chC68L", "iat": 1514518157, "exp": 1514521757, "auth_time": 1514518157, "nonce": "dfsdsdsd" }

md5('-7IloKCawcvBwRijJeo7nsLxx1chC68L' + 2) = 3C86CBBFF35AD3B6E609F5622D776531

我想将主题替换为 md5(client_id + 主题)

{ "iss": "localhost", "sub": "3C86CBBFF35AD3B6E609F5622D776531", "aud": "-7IloKCawcvBwRijJeo7nsLxx1chC68L", "iat": 1514516044, "exp": 1514519644, "auth_time": 1514516044, "nonce": "dfsdsdsd" }

如果我理解您的愿望,OpenID 提供者可以为主题提供任何东西,只要它在特定依赖方的 OpenID 提供者处是唯一的。

OpenID Connect Identity Token Sub 是一个主题标识符,它是一个本地唯一的,并且在颁发者中永远不会重新分配给经过身份验证的实体的标识符,旨在由 OAuth 客户端使用。

Two Subject Identifier types (subject_types_supported) are defined by OpenID Connect and are Required to be present in the OpenID Provider Metadata:

public - 为所有 OAuth 客户端提供相同的子(主题)值。如果提供者在其发现文档中没有 subject_types_supported 元素,则这是默认值。

pairwise - 为每个 OAuth 客户端提供不同的 Sub 值,以免 OAuth 客户端在未经许可的情况下关联最终用户的活动。

OpenID Connect 提供商的 OpenID Connect 发现文档应该在 subject_types_supported 元素中列出其支持的主题标识符类型。

如果数组中列出了不止一种类型,OAuth 客户端可以选择在注册期间使用 subject_type 参数提供其首选标识符类型。

Sub 的长度不得超过 255 个 ASCII 字符。

Sub Sub 值是区分大小写的字符串。