Авторизация веб-форм ASP.NET 4.8 с использованием аутентификации Owin OpenId Connect (app.UseOpenIdConnectAuthenticationC#

Место общения программистов C#
Ответить
Anonymous
 Авторизация веб-форм ASP.NET 4.8 с использованием аутентификации Owin OpenId Connect (app.UseOpenIdConnectAuthentication

Сообщение Anonymous »

Я столкнулся с бесконечным циклом перенаправления между login.microsoftonline.com и моим приложением. Мой проект реализует аутентификацию и авторизацию в проекте веб-форм ASP.NET 4.8. Я могу добавить аутентификацию, используя файл запуска Owin по умолчанию, а затем потребовать аутентификацию в файле веб-конфигурации. Приведенный ниже пример работает правильно, требуя от пользователя входа в систему, прежде чем он сможет получить доступ к страницам/AuthRequired
StartupAuth.CS

Код: Выделить всё

    public partial class Startup
{
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private static string authority = ConfigurationManager.AppSettings["ida:Authority"];
private static string clientSecret = ConfigurationManager.AppSettings["AppRegistrationSecret-Local"];
public void ConfigureAuth(IAppBuilder app)
{
//for debugging
//IdentityModelEventSource.ShowPII = true;

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
ClientSecret = clientSecret,
RedirectUri = postLogoutRedirectUri,
//This allows multitenant
//https://github.com/Azure-Samples/guidance-identity-management-for-multitenant-apps/blob/master/docs/03-authentication.md
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
},

Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthenticationFailed = (context) =>
{
return Task.FromResult(0);
}
}
}
);

// This makes any middleware defined above this line run before the Authorization rule is applied in web.config
app.UseStageMarker(PipelineStage.Authenticate);
}
}
Web.Config

Код: Выделить всё

...















...

Мне нужно добавить авторизацию, чтобы только пользователи с ролью администратора могли получить доступ к Pages/AuthRequired. Я сделал это, обновив веб-конфигурацию:

Код: Выделить всё

...
















...

Добавление авторизации на аутентифицированную страницу работает правильно, если у пользователя есть эта роль, но если пользователь, у которого нет этой роли, пытается получить доступ к странице, он перенаправляется обратно на login.microsoftonline.com, а затем обратно в приложение в бесконечном цикле.
Я вижу, что Owin UseOpenIdConnectAuthentication возвращает ответ 302 при неавторизованном доступе, и это вызывает цикл.
/>Как я могу изменить это, чтобы вместо перенаправления неавторизованных (но прошедших проверку подлинности) пользователей на сайт login.microsoftonline.com этот пользователь перенаправлялся на страницу приложения, на которой отображается ошибка 401?>

Подробнее здесь: https://stackoverflow.com/questions/719 ... cation-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»