我已经实现了Microsoft登录到我的ASP.NET Web应用程序。一切都按预期进行,但是我正在努力理解会议的工作方式。我正在使用OWIN中间件和OpenID connect。
SSO令牌和ID令牌有什么区别?哪一个 一个让我保持登录状态?
如果我尝试访问声明会发生什么情况(例如 userClaims?.FindFirst(System.Security.Claims.ClaimTypes.sid)?. Value) 来自过期的ID令牌?
!Request.IsAuthenticated如何实现当前用户是 在Microsoft登录后通过身份验证?这是因为通用 身份,现在是声明身份,可以返回true?
如果我已登录,并不断刷新网站,那么什么时候 我被迫再次进行身份验证吗?这次控制什么?
我了解ID令牌是什么,它包含声明,以及我如何访问和使用声明。我只是对用户使用其Microsoft帐户登录后会话的工作方式感到困惑。
答案 0 :(得分:0)
没有SSO令牌。 id令牌表示身份验证的证明,并且其中包含一些基本的用户信息。这样您的网络应用就可以获取姓名,电子邮件等。
有效期基于MS库发出的auth cookie。这与另一个令牌(刷新令牌)相关,该令牌代表会话时间。
id令牌具有经过加密验证的数字签名。此外,您的应用还提供了一个客户端机密,以帮助确保令牌可以被信任。
该Cookie的有效期与刷新令牌有关。 Cookie过期后,用户必须再次登录。
更好地理解
我强烈建议通过诸如我的this blog post中的Fiddler之类的工具来跟踪消息。
我个人更喜欢单页应用程序,该应用程序仅使用令牌而不使用cookie。尽管仍然有很多微妙之处,但它们使OAuth方面更易于理解,代码也更简单。