MASL OAuth 支持多重身份验证流程
MASL OAuth Supporting Multiple Authentication flows
我有一个客户端应用程序可以访问我的 WebAPI (1) 使用 Integrated Windows Authentication and the Authorization code [身份验证流程]。
现在我需要第二个 WebAPI (2) 访问原始 WebAPI (1) 以及使用 Client Credentials Authorization code Authentication flow.
我的问题是您是否可以配置 WebAPI (1) 以允许 EITHER 流以及在哪里进行,或者我是否必须构建一个完整的单独 API 来处理授权代码流动?我相信它会在 Startup.cs 的 ConfigureServices 方法中,但我不确定控制器的过滤器将如何处理添加客户端凭据过滤策略。
services.AddControllers(options => {
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
//Add Authorization code filter here as well??
});
在WebAPI的启动(一)中,RequireAuthenticationUser adds DenyAnonymousAuthorizationRequirement to the current instance which enforces that the current user is authenticated. This is, obviously, not going to work for the service-to-service authorization I am looking to implement so needed to be removed to permit both the Authentication flow AND ACL-based, Client Credentials Authentication flow.
此外,为了让 WebAPI (1) 允许 WebAPI (2) 的 ACL-based 身份验证令牌,我需要将以下内容添加到 WebAPI (1) 的配置中:
{
"AzureAD"
{
// other properties
"AllowWebApiToBeAuthorizedByACL" : true,
// other properties
}
}
生成的配置策略最终看起来像:
var policy = new AuthorizationPolicyBuilder()
.RequireClaim("appid")
.Build();
希望遇到这个问题的人能找到这个并节省他们的时间。
我有一个客户端应用程序可以访问我的 WebAPI (1) 使用 Integrated Windows Authentication and the Authorization code [身份验证流程]。
现在我需要第二个 WebAPI (2) 访问原始 WebAPI (1) 以及使用 Client Credentials Authorization code Authentication flow.
我的问题是您是否可以配置 WebAPI (1) 以允许 EITHER 流以及在哪里进行,或者我是否必须构建一个完整的单独 API 来处理授权代码流动?我相信它会在 Startup.cs 的 ConfigureServices 方法中,但我不确定控制器的过滤器将如何处理添加客户端凭据过滤策略。
services.AddControllers(options => {
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
//Add Authorization code filter here as well??
});
在WebAPI的启动(一)中,RequireAuthenticationUser adds DenyAnonymousAuthorizationRequirement to the current instance which enforces that the current user is authenticated. This is, obviously, not going to work for the service-to-service authorization I am looking to implement so needed to be removed to permit both the Authentication flow AND ACL-based, Client Credentials Authentication flow.
此外,为了让 WebAPI (1) 允许 WebAPI (2) 的 ACL-based 身份验证令牌,我需要将以下内容添加到 WebAPI (1) 的配置中:
{
"AzureAD"
{
// other properties
"AllowWebApiToBeAuthorizedByACL" : true,
// other properties
}
}
生成的配置策略最终看起来像:
var policy = new AuthorizationPolicyBuilder()
.RequireClaim("appid")
.Build();
希望遇到这个问题的人能找到这个并节省他们的时间。