在 OAUTH/OpenID-Connect 之前询问用户名或唯一身份
Asking for User Name or Unique Identity before OAUTH/OpenID-Connect
我正在构建一个使用 OAuth2.0 和 OpenId-Connect(某些第三方供应商的)来验证用户身份的网站。
在将用户重定向到供应商的 OAuth 页面之前,我并没有要求用户在我的网站上输入唯一的 UserID,我正在考虑使用在授权过程之后作为 IDToken 的一部分收到的用户电子邮件 ID已完成,作为我网站的用户用户名(唯一标识)。
但是此处的 OpenID 规范
https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
表示 emailid 是可选的,可能不会返回。
所以问题是,在我启动 OAUTH/OpenID-Connect 流程之前,要求用户提供一个唯一名称(我可以在我的网站上用作用户身份)是一种标准做法吗?
每个 issuer 的 sub 声明必须是唯一的。 Required Claims 将永远存在。可以使用iss + sub来唯一标识用户。
要添加更多信息,每个 OpenID 连接提供商都需要提供一个 /userinfo 端点以使用访问令牌获取用户信息。
这里是规格
https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
我正在构建一个使用 OAuth2.0 和 OpenId-Connect(某些第三方供应商的)来验证用户身份的网站。
在将用户重定向到供应商的 OAuth 页面之前,我并没有要求用户在我的网站上输入唯一的 UserID,我正在考虑使用在授权过程之后作为 IDToken 的一部分收到的用户电子邮件 ID已完成,作为我网站的用户用户名(唯一标识)。
但是此处的 OpenID 规范
https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
表示 emailid 是可选的,可能不会返回。
所以问题是,在我启动 OAUTH/OpenID-Connect 流程之前,要求用户提供一个唯一名称(我可以在我的网站上用作用户身份)是一种标准做法吗?
每个 issuer 的 sub 声明必须是唯一的。 Required Claims 将永远存在。可以使用iss + sub来唯一标识用户。
要添加更多信息,每个 OpenID 连接提供商都需要提供一个 /userinfo 端点以使用访问令牌获取用户信息。
这里是规格
https://openid.net/specs/openid-connect-core-1_0.html#UserInfo