当前位置: 首页 > 知识库问答 >
问题:

Azure B2C-无法从策略中的JWT客户端断言令牌读取“日期”声明

瞿文柏
2023-03-14

我无法从JWT客户端断言令牌中读取日期声明,然后通过转换方法“ConvertDateToDateTimeClaime”将其转换为“datetime”声明。我在索赔中尝试了低于日期的格式,但都不起作用。当我在B2C策略中设置日期声明的默认值时,它可以作为例外。

JWT令牌:{“createdDate1”:“2019-05-26”,“createdDate2”:“2019-05-26T00:00:00”,“createdDate3”:“2019-05-26T00:00:00Z”,“验证邮件”:“XXXXXXXXXXXXXXXXXX”,“nbf”:156005928,“exp”:1560006228,“iss”:“XXXXXXXXXXXXXXXXXXXXXX”,“aud”:“XXXXXXXXXXXXXXXXXXXXXXXXXX”}

错误:带有id'createdDate'的声明的数据类型'String'与策略中指定的带有id'createdDate'的声明类型的数据类型'Date'不匹配。

B2C政策

需要帮助。

共有1个答案

爱炯
2023-03-14

试图从JWT的id\u token\u hint参数中读取dateTime声明时出现错误。这周修好了。我可以想象,日期索赔也是如此。

我创建了一个具有以下声明的JWT:

DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
new System.Security.Claims.Claim("LinkExpirationDateTime", ((long)(DateTime.UtcNow.AddMinutes(_appSettings.LinkExpiresAfterMinutes) - unixEpoch).TotalSeconds).ToString(), System.Security.Claims.ClaimValueTypes.DateTime, issuer)

您可以像上的一些示例一样阅读它https://github.com/azure-ad-b2c/samples/(“例如,通过电子邮件发送的帐户赎回链接”)。索赔类型为:

<ClaimType Id="LinkExpirationDateTime">
    <DisplayName>LinkExpirationDateTime</DisplayName>
    <DataType>dateTime</DataType>
</ClaimType>
 类似资料:
  • 什么应该是我的JWT身体的一部分?我在想uid和提供者提供了访问令牌。我在这里可以想到的一个问题是,提供程序特定的访问令牌可以更改。用户可以从提供商的站点撤消令牌,并再次使用emberjs注册。 我愿意在任何其他javascript客户端框架中编写前端,如果它使它更容易的话。

  • 问题内容: 我正在使用dgrijalva / jwt-go /软件包。 我想从令牌中提取有效载荷,但是我找不到方法。 示例(摘自:https : //jwt.io/): 对于编码: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOixMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydhV​​rF7H

  • 您好,我正在JWTTokenStore中使用Spring Security Oauth2。我想在用户将令牌内容与资源请求一起发送回来后从REST服务读取令牌内容。例如:curl-i-H“授权:持有人”http://localhost:8080/api/UserDetails 读取UserDetails服务中的令牌。 非常感谢。

  • 头未与Apollo一起发送。这会导致 我需要在我的文件中对自己进行身份验证,该文件现在位于中 这对我来说有点麻烦。我不确定这是唯一的方法,但这是我的大脑带我去的地方。我正在将apollo.serverless.js`,以便能够访问Cookie中的承载令牌。 这可能就像我的apollo.client的设置不正确一样简单。 我正在直接测试链接,因为带区webhook将使用查询参数直接访问此url。 因

  • 我在控制台中得到这个错误: 我正试图从Angular 7前端验证一个用户。当我使用Postman进行测试时,它对所有请求都非常有效(即使使用JWT令牌)。 我在intelliJ上启用了调试器,再次运行了登录操作,并且正确创建并发送了JWT,但在Angular前端应用程序上,它似乎是空的。 ***请注意,我可能是Spring的中级,但在角方面真的是新手

  • 您可以get get client-go的一个版本,例如get get k8s.io/client-go/1.4/...或者获取k8s.io/client-go/1.4/kubernetes。 现在当我这么做的时候。这是输出- 警告:“k8s.io/client-go/1.4/...”匹配的无包无法加载包:包。:/users/shubhadeeproychowdhury/projects/Go/s