【问题标题】:LogOut with WebAPI from Azure从 Azure 使用 WebAPI 注销
【发布时间】:2020-09-01 07:24:11
【问题描述】:

我正在使用 OAuth2 通过我的 .NET WebAPI 登录到 Azure DevOps,但尽管删除了令牌,但我不知道如何注销。有没有微软的登出网站或类似的东西,我可以使用?

【问题讨论】:

  • 您的问题不清楚,您是否正在寻找访问令牌撤销?见link
  • 在OAuth2.0中基于token的认证过程中,通过token内的验证来提供资源。换句话说,如果您删除令牌,则无法使用该资源。这样就可以让你在前台注销而不向后端服务器请求,最终在web浏览器上注销是一个删除token的过程,这就够了。
  • 是的,我知道并且当时我已经尝试过了,但是在重新加载页面时它会自动登录用户,因此除了删除 cookie 之外,没有其他用户登录的可能性。这并不是退出网站的真正意义。这就是我问的原因。我找到了解决方案,它重定向到app.vssps.visualstudio.com/_signout。现在注销时用户可以重新启动页面并与其他用户一起登录。

标签: .net oauth-2.0 azure-devops webapi


【解决方案1】:

因为浏览器不缓存凭据或访问令牌,注销只是简单地“忘记”令牌,将其从会话存储中删除:

self.logout = function () {
    sessionStorage.removeItem(tokenKey)
}

这个官方document有提到,请参考。

【讨论】:

  • 这很奇怪,我的浏览器确实缓存了我已经删除令牌的凭据,但这还不够
  • @Nok 由于 OAuth 不是身份验证协议,因此没有注销的概念。删除客户端上的访问令牌 - 这就是您所能做的。如果您想在服务器端使令牌无效,请为其添加一个唯一的 id 并在您的服务中跟踪 - 您需要手动构建类似的东西。这是一个参考ticket
【解决方案2】:

我最终所做的是将用户重定向到

https://app.vssps.visualstudio.com/_signout

用于注销。它会注销用户,并在重新启动 Web 应用程序时,用户可以选择不同的帐户。

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多