【问题标题】:Why is the Azure B2C Access Token so long为什么 Azure B2C 访问令牌这么长
【发布时间】:2021-07-01 10:34:04
【问题描述】:

我从 Azure B2C 获得的访问令牌是本地电子邮件登录的 926 个字符和 facebook 登录的 1354 个字符。 facebook 登录时间更长,因为我在令牌中包含了用户图片,但除此之外,我没有在令牌中放入任何用户数据(不是姓名、用户名或其他类似内容)。

由于我必须将访问令牌发送到对 API 的每次调用以获取数据,我想知道为什么它这么长以及可能会影响它的原因。我是否配置了一些增加它的长度的东西,或者这只是正常的?

来自 jwt.ms 的解码 jwt 的审查版本:

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "***"
}.{
  "exp": ***,
  "nbf": ***,
  "ver": "1.0",
  "iss": "***",
  "sub": "***",
  "aud": "***",
  "acr": "b2c_1a_signup_signin",
  "nonce": "defaultNonce",
  "iat": ***,
  "auth_time": ***,
  "picture": "***",
  "idp": "facebook.com",
  "tid": "***"
}.[Signature]

【问题讨论】:

  • 唯一影响令牌长度的是标头和有效负载中的内容(我猜是签名算法)。有效载荷中是否有您想从那里删除的内容?
  • 它很长,因为它在 AAD B2C - JWT 中的形式。它不是您有时可以在其他解决方案中看到的不透明令牌。缺点是大小,优点是收件人可以在不调用发行者的情况下验证它。

标签: azure-active-directory azure-ad-b2c azure-ad-graph-api


【解决方案1】:

JWT 有 3 个部分,标头、有效负载、签名。您只能影响有效负载的长度,该长度由您希望 Azure AD B2C 放入令牌的声明配置。

除了 idp 和图片声明之外,您的整个负载主要由必需声明组成。

如果需要这两个声明,这里没有什么可以优化的。

【讨论】:

  • 好的,谢谢。这不是问题,我只是想确保我没有做错什么。有趣的是,我看到 facebook 的标题实际上更小,68 个字符,而电子邮件的 107 个字符。我通过删除图片、identityProvider 和tenantId 来减少负载,因为我不使用这些。这使有效负载减少到 416,总大小减少到 865 个字符。签名始终为 343。
  • PS!我删除了图片,然后从后端的 Graph API 获取它。无论如何,我需要从后端 API 获取图片,因为用户可以用帐户图片覆盖他们的 Facebook 图片。
猜你喜欢
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 2019-08-25
  • 2020-09-09
  • 2013-03-16
  • 2018-04-22
相关资源
最近更新 更多