我不是安全专家,所以我想在这里验证这些选项,因为我对所有可能性都有些迷茫。
我有一个ASP.NET Core MVC Web应用程序,并向它添加了Facebook授权(还会有其他授权,例如Microsoft Mail,以及与Azure AD的集成)。因此,用户当前可以单击“登录”按钮,然后单击“ Facebook”按钮;他们重定向到Facebook,输入他们的凭据,最后回到我的网站进行身份验证。效果很好,在声明中,我收到了名称标识符和电子邮件地址。
现在,我想添加一个ASP.NET Core Web API,该API由MVC站点(随后由其他使用者)调用。
由于我必须在Web API中实现我自己的授权机制,因此我正在考虑将身份验证令牌从MVC站点传递到Web API,以便在Web API中我基于名称标识符识别经过身份验证的用户。在令牌中,我找到了该用户的授权。
在这里提出的解决方案对我的情况是否可行?还是您通常以其他方式处理这种情况?我可以看看的演示应用程序?
答案 0 :(得分:0)
在这里提出的解决方案对我的情况是否可行?还是您通常以其他方式处理这种情况?我可以看看的演示应用程序?
是的,您可以使用Oauth 2.0 on-behalf-of flow来实现您的想法。 OAuth 2.0代理流程适用于应用程序调用服务/网络API的用例,而服务/网络API又需要调用另一个服务/网络API。这个想法是通过请求链传播委派的用户身份和权限。
这是工作流程:
1.客户端应用程序使用令牌A(带有API A的音频声明)向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。