c# - 如何授权来自另一个 WebApi 项目的请求

标签 c# asp.net-web-api oauth-2.0 asp.net-identity

在不同的服务器上有 2 个 WebApi 项目。这些服务器之一 (WebApi-A) 具有 OAuth2 身份验证工作流设置,包括授权服务器和所有。

另一个 WebApi 项目 (WebApi-B) 有一个端点,我想通过 [Authorize] 属性进行身份验证。我不想拥有新的授权服务器,而是利用(WebApi-A 的)身份验证过程来验证 token 。

据我了解,这些服务器上的机器 key 是否相同。我们基本上可以在 WebApi-B 中复制 WebApi-A 的身份验证过程,而根本不必调用 WebApi-A

我如何实现这一目标?

最佳答案

理论上,您可以传递 JWT token ,如果您的 OAuth 设置使用相同的客户端密码和数据存储,它应该可以正常工作。您必须确保在请求时添加 JTW token 并使用一些分布式缓存进行验证。

我想问您是否应该创建一个网关来处理和验证请求并将它们委托(delegate)给单独的 API?感觉身份服务器 ( http://docs.identityserver.io/en/latest/topics/apis.html ) 可以解决您的问题。除了从 web api A 移动身份验证之外,您所做的任何事情都只是权宜之计。

复制设置可能有效,但这意味着您现在必须在两个地方维护它。所以我同意这样做不太理想。

这是一篇很棒的文章,可能对您有帮助:

https://www.scottbrady91.com/OAuth/Delegation-Patterns-for-OAuth-20

关于c# - 如何授权来自另一个 WebApi 项目的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58247863/

相关文章:

c# - 从 C# 向进程发送 CTRL_C/SIGINT

asp.net-core - 在 ASP.NET Core SPA 模板的 Identity Core token 响应中添加角色

google-api - 错误: invalid_client no registered origin

c# - LINQ 查询的位置

c# - Selenium WebDriver - 找不到 Chrome 二进制文件

c# - 可以设置多个异常记录器的用例是什么

asp.net-web-api - 实现 ASP.NET WebAPI 版本控制的最佳方法是什么?

javascript - iOS 8 在 OAuth 的 401 上显示基本身份验证的弹出窗口

没有 user_impersonation 的 Azure 资源管理 API,可能吗?

c# - 如何只从sql server获取日期