gpt4 book ai didi

asp.net - 我应该如何使用 OAuth 2.0 将身份验证从桌面应用程序共享到 Web 应用程序

转载 作者:行者123 更新时间:2023-12-05 04:15:33 24 4
gpt4 key购买 nike

我有一个用 ASP.Net 编写的 RESTful API,它实现了用于身份验证的 OAuth 2,目前可以通过 Web 应用程序访问它。我还有一个直接访问相同资源的旧式桌面客户端(不是通过 RESTful API 并且没有 OAuth,而是使用相同的登录凭据并访问相同的数据库)。我现在要满足的要求是允许用户单击桌面应用程序中的链接,以便将 Web 应用程序打开到特定屏幕,当他们这样做时,让 Web 应用程序自动进行身份验证,以便他们不必手动登录(因为他们已经登录到桌面应用程序)。

我正在尝试弄清楚如何在框架的限制范围内处理这个问题。一般来说,我不太熟悉 OAuth 2,但据我了解,我不应该在客户端之间共享 token ,并且没有专门用于这种交接的流程(除非我遗漏了什么)。最坏的情况是,我可以在 OAuth 之外生成一个临时 token ,Web 客户端使用它来进行身份验证而不是用户名和密码,但我希望避免超出框架中已有的内容来执行我需要做的事情.

所以问题是:OAuth 2.0 框架中是否内置了一些合适的方法来处理两个应用程序之间的这种“握手”,或者我应该构建自己的处理方法?

最佳答案

使用临时的一次性 token 实际上是 OAuth 规范(authorization_code 授权类型)的一部分。在这种情况下,这个短暂的代码可以交换为 access_token(和 refresh_token)。您将必须实现此 authorization_code 的生成和验证。

如果您使用的是 OWIN OAuth 中间件:

  1. 您可以在您的桌面客户端应用访问的单独 API 端点生成代码。
  2. 收到 token 后,将其传递给您的浏览器,并通过安全连接将其定向到使用 grant_type=authorization_code 的身份验证端点。示例:调用 Process.Start("https://example.com/ExternalLogin/authorization_code_goes_here ")。在网页上,使用 grant_type=authorization_code 将用户重定向到您的 OAuth token 端点。
  3. AuthenticationTokenProvider.Receive 将被调用,您将在其中验证您的 token 。 (Example code here)。
  4. 验证成功后,将调用 OAuthAuthorizationServerProvider.GrantAuthorizationCode,您将在其中以与使用 grant_type=password 相同的方式处理经过身份验证的用户。

请记住,您的 token 验证逻辑应确保您的 token 是短暂的、只能使用一次并通过安全连接传输。

如果您想进一步研究该主题,这有时称为“单点登录”。

关于asp.net - 我应该如何使用 OAuth 2.0 将身份验证从桌面应用程序共享到 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32072023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com