gpt4 book ai didi

asp.net-mvc - AllowAnonymous 不适用于 azure 广告身份验证

转载 作者:行者123 更新时间:2023-12-03 18:28:07 25 4
gpt4 key购买 nike

我有一个 Asp.net MVC 应用程序,我在其中使用 Azure AD 身份验证对用户进行身份验证。我想允许用户在不登录的情况下访问一些 api Controller 。我尝试将 [AllowAnonymous] 属性放在 Controller 顶部以跳过这些 Controller 的身份验证,但是它总是重定向到 Microsoft 登录页面以获取凭据。来自 Startup.cs 的代码片段:

public void ConfigureAuth(IAppBuilder app)
{
string clientId = GetConfigValue("ida_ClientId");
string aadInstance = GetConfigValue("ida_AADInstance");
string tenant = GetConfigValue("ida_Tenant");
string domain = GetConfigValue("ida_Domain");
string authority = GetConfigValue("ida_Authority");
string postLogoutRedirectUri = GetConfigValue("ida_RedirectUri");

bool devEnvironment = Convert.ToBoolean(GetConfigValue("DevEnvironment"));

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieHttpOnly = true,
CookieSecure = devEnvironment ? CookieSecureOption.SameAsRequest : CookieSecureOption.Always,
});

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error?message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
}

private string GetConfigValue(string key)
{
if (RoleEnvironment.IsAvailable)
{
return RoleEnvironment.GetConfigurationSettingValue(key);
}
else
{
return ConfigurationManager.AppSettings[key];
}
}
}

如果我遗漏了什么,请告诉我。提前致谢

最佳答案

在我看来,任何页面上都允许匿名 除非应用以下四种设置之一:

在 Startup.Auth 类的 ConfigureAuth 方法的底部:

    // This makes any middle-ware defined above this line run before the Authorization rule is applied in web.config
app.UseStageMarker(PipelineStage.Authenticate);

Controller 类/方法的属性:
    [Authorize]
public class HomeController : Controller

App_Start 全局过滤器:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
}

在 Web.config 的 system.web 部分
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>

因此,您基本上必须通过删除任何全局设置然后要求对 View 进行身份验证来限制进行反向思考。

关于asp.net-mvc - AllowAnonymous 不适用于 azure 广告身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com