【问题标题】:Get Claims from SWT Token从 SWT 令牌获取声明
【发布时间】:2017-09-28 21:58:28
【问题描述】:

我已在服务器端的 ASP.Net Core 应用程序中成功验证了我的 Azure 媒体服务帐户。 Azure 返回一个简单 Web 令牌 (SWT),其中还包含带有此令牌过期时间戳的声明。

令牌如下所示:

http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=healthtrainee&urn%3aSubscriptionId=bc73f3ce-aafe-40ff-bd14-56bd5969b725&http%3a%2f%2fschemas.microsoft.com %2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1493595982&Issuer=https%3a%2f%2fwamsprodglobal001ac accesscontrol.windows.net%2f&HMACSHA256=a1tBHoUzli1oEzzGwYGcqdE5EGJAv8xPXzz4XWB5EBo%3d

如何从该令牌中获取声明以处理令牌生命周期(必要时刷新)。 我确信那里有一些东西可以让我免于自己解析它。

【问题讨论】:

    标签: c# azure asp.net-core access-token claims


    【解决方案1】:

    如何从该令牌中获取声明以处理令牌生命周期(必要时刷新)。

    通常,如果我们使用REST API 获取访问令牌,我们可以在响应正文中检索access_tokenexpires_in(表示访问令牌有效的秒数)值,然后我们可以将值缓存到外部存储并监控expires_in 值并确保访问令牌没有过期。

    另外,如果我们使用媒体服务SDK,我们也可以retrieve and cache the AccessToken string and the TokenExpiration values,然后监控并确保TokenExpiration没有过期。

    var accessToken = _context.Credentials.AccessToken;
    var tokenExpiration = _context.Credentials.TokenExpiration;
    

    【讨论】:

    • 谢谢。这对我来说是 b 计划,即使用 expires_in 值来计算过期时间戳。我希望能够使用令牌中的过期时间戳来避免存储某种“冗余”信息。使用媒体服务 SDK 的第二个建议对我来说不是一个选项,因为我正在使用 .Net Core 并且 SDK 不支持 Core afaik。
    • I hoped to be able to use the expiration timestamp in the token to avoid storing kind of "redundant" information. 如果你真的想从 SWT 中提取 ExpiresOn 部分,你可以尝试编写一个正则表达式来匹配所有令牌字符串。
    猜你喜欢
    • 2012-03-12
    • 2019-01-04
    • 2017-10-05
    • 1970-01-01
    • 2020-01-17
    • 2023-03-23
    • 2018-06-16
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多