【问题标题】:Does ASP.NET Core feature a built-in OAuth2 token exchange?ASP.NET Core 是否具有内置的 OAuth2 令牌交换功能?
【发布时间】:2021-03-10 07:24:17
【问题描述】:

我正在构建一个 ASP.NET Core 应用程序并使用 FusionAuth 作为我的身份验证服务器。我正在尝试通过使用 JWT 不记名令牌的 SPA 来实现这个authorization grant workflow。总而言之,一旦用户使用 FusionAuth 进行身份验证,前端应该使用授权码重定向到后端服务器。然后我的后端服务器需要在一个特殊的端点接收这个代码。在此端点内,它将再次调用 FusionAuth,但这次使用只有服务器拥有的客户端密码。反过来,FusionAuth 将以 JWT 和刷新令牌的形式发回授权令牌,然后我的服务器需要将其返回给前端。

我查看了.AddOAuth 方法,并阅读了似乎能够执行令牌交换的代码。但是,它也有很多涉及挑战和登录/注销的逻辑。这让我觉得它应该用于基于 cookie 的服务器端身份验证,就像在 Razor 页面中一样。

我要做的就是将我的服务器设置为这个身份验证中介。看起来.AddOAuth() 可能会为我做这件事,但它可能不是为了这个目的。我找不到任何同时使用.AddJwt(...).AddOAuth(...) 的人的例子。 ASP.NET Core 中是否有执行令牌交换的机制?

【问题讨论】:

    标签: c# asp.net-core authentication oauth-2.0


    【解决方案1】:

    您是否尝试过使用 IdentityModel?它不是 ASP.NET Core 的一部分,但它是开源的。我发现它在 ASP.NET 核心中实现授权代码授予时很有用。

    以下是一些可能有用的文档:

    https://identitymodel.readthedocs.io/en/latest/aspnetcore/web.html

    【讨论】:

      【解决方案2】:

      简短的回答是肯定的 - 请参阅Introduction to Identity on Asp.NET CORE。 OAuth 2 有很多种风格,这意味着它可以通过多种方式进行配置。您需要阅读文档。

      【讨论】:

      • 您似乎不理解 OP 的问题(他们不只是想将 OAuth 作为身份验证方法添加到他们的 SPA 中),并且“这是通用文档,请阅读它们,以便您可以找到你需要的东西”从来都不是一个好的答案。
      • 然而,有时“阅读文档”是一般问题的唯一答案。 Asp.NET Core 对 OAuth 提供了丰富的支持,远远超出了将其用作 SPA 的身份验证方法。要了解如何应用该技术,必须确切地知道正在尝试什么。对于初学者来说,即使没有先自己做一些研究,也很难以一种允许其他人提供帮助的方式表达问题。
      • 如果您认为“去阅读文档”是对问题的回答,您的回答最好作为评论。
      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2012-02-10
      • 2017-04-21
      • 2018-05-06
      • 1970-01-01
      • 2023-03-14
      • 2012-08-06
      相关资源
      最近更新 更多