我正在努力了解何时使用会话cookie,或仅使用由IdP发行的令牌作为承载令牌。
使用IdP发行的令牌的主要优势是,您获得了基于 standards 的令牌机制(包括确保在JWT签名时不会篡改)吗?
与使用专有的供应商机制将其转换为声明标识,然后转换为自定义会话cookie(按照owin中间件)相反?
自定义cookie方法不具有可以添加非ipd发出的声明(例如:来自系统数据库)的优势吗?
使用基于id的id_token发行的idp与基于cookie的会话方法相比,其他有哪些主要优势?
也许承载令牌方法不需要在服务器上进行缓存,以便人们可以重用它来调用具有不同受众价值的第三方服务?如果使用cookie,令牌会丢失吗? (由于我尚不了解呼叫第三方服务的工作方式,因此我正在联系。)
答案 0 :(得分:0)
Id令牌用于面向用户的应用,以证明用户身份。 然后由您的应用决定如何根据将来的请求对用户进行身份验证。
从技术上讲,您可以只存储Id令牌并使用它,正如您提到的那样,由于它是经过数字签名的,因此无法扩展。 对于我们大多数项目来说哪一个不好。
至少在常规Azure AD中(不确定B2C),您不能使用Id令牌来获取另一个API的访问令牌。 在登录时,除了Id令牌之外,您还必须在那里获得一个授权码, 并将其交换为访问令牌(然后在服务器端缓存)。
如果您将Id令牌用作应用程序的身份验证令牌,请记住,从令牌终结点发出的Id令牌(在正常的Azure AD中交换授权代码时)未签名(我猜因为您收到的是对您的请求的响应+通过HTTPS)。 在重定向到您的应用程序中,只有您获得的Id令牌在正常AAD中签名。 我不确定这是否也适用于B2C。