WSO2 id_token缺少声明

时间:2019-11-28 02:24:32

标签: wso2 wso2is

根据我的要求,我需要获取“ auth_time”和“ acr” openid声明。在我的ID令牌上,只能获得以下声明: amr,iss,exp,iat,nonce,c_hash,aud和at_hash

如何在令牌响应中添加这些声明? 我使用openid-client节点js库添加到scope =“ openid”

2 个答案:

答案 0 :(得分:2)

根据OpenID Connect spec,auth_time和acr是可选声明。因此,默认情况下,WSO2身份服务器不会在id_token中发送这些声明。

1。 auth_time

根据规范

  

auth_time:最终用户身份验证发生的时间。它的值是一个JSON   代表从1970-01-01T0:0:0Z起的秒数   直到日期/时间为止都以UTC为单位进行测量。发出max_age请求或   当将auth_time请求为基本声明时,则此声明为   需要;否则,它是可选的。

身份服务器遵守规范,您可以选择在id_token中获得auth_time作为声明。

选项1

要获取auth_time,您可以在授权流程中发送带有 max_time 作为参数的请求。下面提供了示例请求

https://localhost:9443/oauth2/authorize?response_type=code&scope=openid&max_age=12345&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fplayground2%2Foauth2client&client_id=KmerETRbZx2ErGhCqRfv4xhxeSAa

选项2:

否则,您可以请求auth_time作为请求中的基本要求。  您必须将声明作为请求参数传递,并将auth_time作为基本声明发送。

{"id_token":{"auth_time":{"essential":true}}}

您必须进行url编码,并将其作为值传递给 claims 请求参数到授权端点。下面给出了示例请求。

https://localhost:9443/oauth2/authorize?response_type=code&scope=openid&&claims=%7B%22id_token%22%3A%7B%22auth_time%22%3A%7B%22essential%22%3Atrue%7&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fplayground2%2Foauth2client&client_id=KmerETRbZx2ErGhCqRfv4xhxeSAa

2。 acr:

  

acr:可选。身份验证上下文类参考。

要在id_token中获取acr值,首先需要将 acr_values 作为带有所有acr值的请求参数传递。

通过使用自适应身份验证脚本,可以轻松地将ACR和AMR与WSO2 Identity Server一起使用。通过这种方式,身份提供者可以在用户身份验证流程中实施其他保证。您可以从身份验证脚本中选择acr。然后,身份服务器将在id_token响应中发送选定的acr。您可以遵循此document在身份服务器中使用ACR,以及如何配置以在id_token中获取acr值。

答案 1 :(得分:0)

您可能希望在服务提供商中将这些声明添加为Requested Claims

https://docs.wso2.com/display/IS580/Configuring+Claims+for+a+Service+Provider