使用Vue JS和.Net Core Web API这样的堆栈-在哪里实现auth(Azure AD)? - c#

我对“何处”(在哪一层,如果不是两者都在)感到困惑,我想在我的应用程序中使用Azure AD进行身份验证。

因此,我有一个Vue JS前端,并且我已经阅读了有关如何利用ADAL JS来帮助客户端进行身份验证的信息。

但是,我还需要确保对Web API的调用也得到保护,而ADAL JS显然不能做到这一点。

如何将对我的Web api的调用限制为仅使用Azure AD经过身份验证的用户(他们将需要通过vue js应用程序登录)?然后,类似地,允许Web api通过Azure AD进行身份验证,以便从Blob存储中检索内容?

进一步的上下文(如有必要)

一个示例流程将是用户登录(在vue js应用程序中),然后将文件发布到我的Web api,然后将其放入blob存储(azure)。然后,经过身份验证的用户可以稍后请求此文件(必须将其限制为仅限经过身份验证的用户),然后将其返回给经过身份验证的客户端。

编辑

我是不是在想这个?这是Web API在Azure中通过AD进行身份验证,接收令牌并将该令牌转发到客户端以进行传递的简单情况吗?

参考方案

您的Vue应用需要使用MSAL.js或ADAL.js处理身份验证。
然后,它可以使用OAuth隐式流来获取对您的后端API的访问令牌。

您的后端API使用调用者获取的JSON Web令牌对调用者进行身份验证。

您可以通过定义范围和应用程序权限来控制哪些应用程序可以调用您的API,然后将它们分配给您希望具有这些访问权限的应用程序。
然后,您的API需要检查令牌是否具有这些权限:)

许可和同意:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent

前端登录:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-sign-in

前端获取令牌:https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-acquire-token

ASP.NET Web API 2中AuthorizeAttribute发生了什么变化? - c#

我已经将项目和一组单元测试从ASP.NET Web API升级到ASP.NET Web API 2。我们将自定义DelegatingHandler用于自定义身份验证机制。它将Thread.CurrentPrincipal和HttpContext.Current.User设置为适当的System.Security.Claims.ClaimsPrincipal。…

C#.NET Web API从发布请求返回 - c#

我向要返回JSON数据的路由发出POST请求。 [HttpPost("api/v1/testGetAll")] public object Test([FromBody]object filteringOptions) { return myService.GetLogs(filteringOptions).ToArray(); } 路由…

Azure Insights请求日志 - c#

我正在尝试在azure Insights中查看错误或异常内的请求信息。我要寻找的是API中发生错误时,能够检查错误信息(天蓝色的确非常好),但还能查看触发错误的请求内的信息。有人知道这是否可能吗?谢谢, 参考方案 默认情况下,Application Insights不会这样做。但是您可以使用在应用程序中作为.net核心中间件实现为拦截器的自定义记录器轻松做到…

在ASP.NET Web API中创建输入参数并使用Java Web服务功能 - java

我创建了一个具有附加功能的Java Web服务。我还创建了一个ASP.NET Web API,该API调用Java Web服务并显示结果。可以说,我输入http://localhost:8080/addition/9/6作为带有Java Web服务功能应添加的输入参数的URL。我得到的输出数据为{"firstNumber":9,"…

调用SignalR Hub不适用于Asp.Net Core Web API - c#

我是SignalR的新手。我正在尝试设置一个Asp.Net Core WebAPI,以便其他客户端可以使用SignalR连接到它并获取实时数据。我的Hub类是:public class TimeHub : Hub { public async Task UpdateTime(string message) { await Clients.All.SendAs…