【问题标题】:Call web API from MVC site that is authenticated with Facebook从通过 Facebook 验证的 MVC 站点调用 Web API
【发布时间】:2019-06-19 05:49:38
【问题描述】:

我不是安全专家,所以我想在这里验证选项,因为我有点迷失在所有可能性中。

我有一个 ASP.NET Core MVC Web 应用程序,并为其添加了 Facebook 授权(还有其他的,例如 Microsoft Mail,以及与 Azure AD 的集成)。所以用户目前可以点击“登录”按钮,然后点击“Facebook”按钮;他们重定向到 Facebook,输入他们的凭据,最后回到我的网站进行身份验证。这很好用,并且在声明中我收到了名称标识符和电子邮件地址。

现在我想添加一个 ASP.NET Core Web API,由 MVC 站点调用(稍后由其他消费者调用)。

由于我必须在 Web API 中实现自己的授权机制,我正在考虑将身份验证令牌从 MVC 站点传递到 Web API,以便在 Web API 中我知道经过身份验证的用户,并基于名称标识符我在令牌中找到,我为这个用户处理授权。

我在此提出的解决方案对我的方案是否可行?还是您通常以另一种方式处理这种情况?我可以看看演示应用程序吗?

【问题讨论】:

    标签: azure authentication asp.net-core asp.net-core-mvc asp.net-core-webapi


    【解决方案1】:

    我在此提出的解决方案对我的方案是否可行?还是您通常以另一种方式处理这种情况?我可以看看演示应用程序吗?

    是的,您可以使用Oauth 2.0 on-behalf-of flow 来实现您的想法。 OAuth 2.0 On-Behalf-Of 流程服务于应用程序调用服务/Web API 的用例,而后者又需要调用另一个服务/Web API。这个想法是通过请求链传播委托的用户身份和权限。

    这是工作流程: 1.客户端应用程序使用令牌 A 向 API A 发出请求(带有 API A 的 aud 声明)。
    2.API A 向 Azure AD 令牌颁发端点进行身份验证,并请求令牌以访问 API B。
    3.Azure AD 令牌颁发端点使用令牌 A 验证 API A 的凭据,并颁发 API B 的访问令牌(令牌 B)。
    4.令牌B设置在对API B的请求的授权头中。
    5.来自受保护资源的数据由 API B 返回。

    您可以参考代码示例:Calling a web API in an ASP.NET Core web application using Azure AD

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2023-04-05
      • 2014-05-13
      • 1970-01-01
      • 2016-10-06
      • 2017-03-03
      • 2019-05-05
      • 2014-06-13
      • 2019-06-27
      相关资源
      最近更新 更多