asp.net - 在 ASP.NET Core 样板中集成 Azure AD 身份验证
问题描述
我从https://aspnetboilerplate.com/Templates (带有 Angular SPA 的 ASP.NET Core)下载了免费模板,现在正在尝试集成 Azure AD 身份验证。我已经尝试了 Microsoft 提供的一些示例,这些示例都可以正常工作,但是,我无法让它与此模板一起使用。
谁能指导我如何使用 ABPAuthorize 属性进行设置?我目前正在从登录服务获取有效的 JWT 令牌,但是在使用此令牌时,我收到了 403 禁止错误。
提前致谢!
解决方案
我正在努力解决同样的问题。我提出了这个想法,但它只解决了部分问题。在您应该能够通过 Azure AD 与控制器连接之后
- 添加到 appsettings.json
"Authentication": {
"AzureAd": {
"IsEnabled": "true",
"Instance": "https://login.microsoftonline.com/",
"Domain": "myDomain.onmicrosoft.com",
"TenantId": "57****t6",
"ClientId": "8a***44",
"CallbackPath": "/signin-oidc"
}
- 将 nuget 包 Microsoft.AspNetCore.Authentication.AzureAD.UI安装到YourNamespace.Web.Host
- 添加到 Startup.cs
例如:
app.UseAuthorization();
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
...
app.UseAuthentication();
app.UseAuthorization();
...
}
- 添加到 AuthConfigurer.cs
public static void Configure(IServiceCollection services, IConfiguration configuration)
{
if (bool.Parse(configuration["Authentication:AzureAd:IsEnabled"]))
{
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => configuration.Bind("Authentication:AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.TokenValidationParameters.ValidateIssuer = false;
});
} ...
}
- 添加到控制器 AuthorizeAttribute:
eg:
[Authorize(AuthenticationSchemes = AzureADDefaults.BearerAuthenticationScheme)]
[Authorize(AuthenticationSchemes = AzureADDefaults.BearerAuthenticationScheme)]
[Route("api/[controller]/[action]")]
[ApiController]
public class HelloController : LouncherPadControllerBase
{
[HttpGet]
public string Get()
{
return "Hello, this controller works!";
}
}
- 然后在标头中传递令牌
去做:
在 ABP 框架中验证或注册用户
推荐阅读
- excel - VBA/公式逻辑建议
- opencv - 如何使用 OpenCV Python 检测自然场景中文本的位置?
- ruby-on-rails - 如何从应用程序本身为应用程序设置配置或管理栏
- rest - 需要在路径注释中获取 - 区分大小写的配置文件名称
- c# - 生成的对象上的Unity null?
- angular - 遍历 BehaviorSubject 模板层的值
- xamarin.forms - 宽屏时 MasterDetailPage 从右到左的流向
- c++ - 为什么 std::set 容器使用比其数据大小更多的内存?
- sockets - python:发送UDP消息
- r - R,igraph:在哪里存储顶点名称更好?+ 运行时测量