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

时间:2017-12-29 03:42:31

标签: php oauth-2.0 yii2 openid openid-connect

oauth2图书馆:

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

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

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

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

id标记的步骤:

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 + subject)

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

1 个答案:

答案 0 :(得分:1)

如果我了解您的愿望,OpenID提供商可以为该主题提供任何内容,只要该OpenID提供商对于特定的依赖方是唯一的。

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

Two Subject Identifier types(subject_types_supported)由OpenID Connect定义,并且必须出现在OpenID Provider Metadata中:

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

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

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

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

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

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