Owin身份验证:SSO令牌与ID令牌

时间:2020-07-13 14:45:37

标签: asp.net authentication owin openid-connect claims-based-identity

我已经实现了Microsoft登录到我的ASP.NET Web应用程序。一切都按预期进行,但是我正在努力理解会议的工作方式。我正在使用OWIN中间件和OpenID connect。

  1. SSO令牌和ID令牌有什么区别?哪一个 一个让我保持登录状态?

  2. 如果我尝试访问声明会发生什么情况(例如 userClaims?.FindFirst(System.Security.Claims.ClaimTypes.sid)?. Value) 来自过期的ID令牌?

  3. !Request.IsAuthenticated如何实现当前用户是 在Microsoft登录后通过身份验证?这是因为通用 身份,现在是声明身份,可以返回true?

  4. 如果我已登录,并不断刷新网站,那么什么时候 我被迫再次进行身份验证吗?这次控制什么?

我了解ID令牌是什么,它包含声明,以及我如何访问和使用声明。我只是对用户使用其Microsoft帐户登录后会话的工作方式感到困惑。

1 个答案:

答案 0 :(得分:0)

  1. 没有SSO令牌。 id令牌表示身份验证的证明,并且其中包含一些基本的用户信息。这样您的网络应用就可以获取姓名,电子邮件等。

  2. 有效期基于MS库发出的auth cookie。这与另一个令牌(刷新令牌)相关,该令牌代表会话时间。

  3. id令牌具有经过加密验证的数字签名。此外,您的应用还提供了一个客户端机密,以帮助确保令牌可以被信任。

  4. 该Cookie的有效期与刷新令牌有关。 Cookie过期后,用户必须再次登录。

更好地理解

我强烈建议通过诸如我的this blog post中的Fiddler之类的工具来跟踪消息。

我个人更喜欢单页应用程序,该应用程序仅使用令牌而不使用cookie。尽管仍然有很多微妙之处,但它们使OAuth方面更易于理解,代码也更简单。