我正在开发应用程序使用Asp.net核心1.1和角4。基于令牌的身份验证在Asp.Net核心API与令牌从Azure AD获得通过ADAL
只有一个解决方案,我有我的API和Angular应用程序。所以我不需要单独托管它们或启用cors。为了从客户端进行调用,我只需从角度的http方法中传递“/ mycontroler”。
这个应用程序的要求之一是使用登录与Azure AD,但我找不到任何清晰和uptodate,可以帮助我实现此流程。
我到目前为止是从前端登录使用Adal,我能够接收用户信息和令牌。那么,我现在如何在我的api中使用这个令牌来限制对资源的访问?
我有我的API启动代码是这样的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = 500; // or another Status accordingly to Exception Type
context.Response.ContentType = "application/json";
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null)
{
var ex = error.Error;
await context.Response.WriteAsync(ex.Message, Encoding.UTF8);
}
});
});
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = $"{Configuration["Authentication:AzureAd:AADInstance"]}{Configuration["Authentication:AzureAd:TenantId"]}",
Audience = Configuration["Authentication:AzureAd:ClientId"],
TokenValidationParameters =
new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidIssuer =
$"{Configuration["Authentication:AzureAd:AADInstance"]}{Configuration["Authentication:AzureAd:TenantId"]}/v2.0"
}
});
app.UseMvcWithDefaultRoute();
app.UseDefaultFiles();
app.UseStaticFiles();
}
}}
,但我不知道到底是什么在我的控制器做检查用户权限和其他信息一样他们所在的团体。
在大多数情况下,我发现是使用Identity在API本身中发出的令牌,但我的情况不同,因为令牌是由AAD发出的。
我已阅读了许多文章和帖子,但找不到任何东西来帮助我。
非常感谢您的回答,南禹!我真的已经想通了,并且来到这里回答我自己的问题,但是,你所支持的文章肯定会有用!还有另一个问题,我正在努力弄清楚如何在我的应用程序中使用自定义角色。我在清单文件中添加了两个角色,但我没有发现如何使用新的Azure门户将这些角色分配给我的组。当我进入我的应用程序的IAM部分时,在角色列表中看不到我的自定义角色。 – Ewertonews
在azure门户中,通过点击左侧导航栏中的Active Directory导航到您的租户,单击“企业应用程序” - >选择您的应用程序 - >单击“用户和组” - >单击“添加用户”按钮以添加要分配角色的用户 - >选择一个用户并选择您在清单中定义的角色。 –