代码之家  ›  专栏  ›  技术社区  ›  user9314395

为什么使用idp颁发的id_令牌-而不是自定义会话cookie?

  •  0
  • user9314395  · 技术社区  · 6 年前

    我很难理解何时使用会话cookie,或者只是使用IdP发行的令牌作为承载令牌。

    使用IdP颁发的令牌的主要优点是 标准 基于令牌的机制(包括确保JWT被签名时不被篡改)?

    与使用专有供应商机制将其转换为声明标识,然后转换为自定义会话cookie(根据owin中间件)不同?

    自定义cookie方法是否具有可以添加非ipd发出的声明(例如:来自系统数据库)的优点?

    什么 其他 与基于cookie的会话方法相比,使用idp颁发的id_令牌是否具有关键优势?

    是不是承载令牌方法不需要在服务器上缓存,这样就可以重用它来调用具有不同访问价值的第三方服务?如果我们用饼干的话,代币会丢失吗?(我正在联系,我知道,因为我还不明白呼叫第三方服务是如何工作的)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   juunas    6 年前

    Id令牌是为面向用户的应用程序准备的,作为用户身份的证明。 然后由你的应用来决定你如何在未来的请求中对用户进行身份验证。

    从技术上讲,您可以只存储Id令牌并使用它,正如您所提到的,因为它是数字签名的,所以不能扩展。 这对我们的大多数项目来说都是不好的。

    至少在普通的Azure AD中(对B2C不确定),您不能使用Id令牌来获取另一个API的访问令牌。 在那里,你必须得到一个 授权码 除了登录时的Id令牌之外, 并将其交换为访问令牌(然后缓存服务器端)。

    如果您将Id令牌用作应用程序的身份验证令牌,请记住,从令牌终结点发出的Id令牌(在普通Azure AD中交换授权代码时)没有签名(我猜,因为您是通过HTTPS+接收对请求的响应)。 只有在重定向回应用程序时获得的Id令牌是以普通AAD登录的。 我不确定这是否也适用于B2C。

    推荐文章