代码之家  ›  专栏  ›  技术社区  ›  L-Four

从通过Facebook认证的MVC站点调用Web API

  •  0
  • L-Four  · 技术社区  · 6 年前

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

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

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

    因为我必须在Web API中实现我自己的授权机制,所以我在考虑将认证令牌从MVC站点传递到Web API,以便在Web API中我了解经过认证的用户,并根据我在令牌中找到的名称标识符,为该用户处理授权。

    我在这里提出的解决方案对我的方案可行吗?或者你是以另一种方式处理这种情况?演示我可以看的应用程序?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Joey Cai    6 年前

    我在这里提出的解决方案对我的方案可行吗?或者你是以另一种方式处理这种情况?演示我可以看的应用程序?

    是的,你可以用 Oauth 2.0 on-behalf-of flow 实现你的想法。代表流的OAuth2.0服务于应用程序调用服务/Web API的用例,而该API又需要调用另一个服务/Web API。其思想是通过请求链传播委派的用户标识和权限。

    以下是工作流程: enter image description here 1.客户端应用程序使用令牌A向API A发出请求(AUD声明为API A)。
    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 .