Проблема с OpenIdConnectAuthenticationOptions в Startup.cs (свойство AuthenticationFailed) - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть следующий код для моего Startup.cs

public void ConfigureAuth(IAppBuilder app)
{
    app.UseWindowsAzureActiveDirectoryBearerAuthentication(
        new WindowsAzureActiveDirectoryBearerAuthenticationOptions
        {
            TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
            {
                ValidAudience = ConfigurationManager.AppSettings["value1"]
            },
            Tenant = ConfigurationManager.AppSettings["value2"]
        });

    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        CookieManager = new SystemWebCookieManager()
    });

    app.UseKentorOwinCookieSaver(); //Workaround for infinite loop between webapp & login page

    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = clientId,
            Authority = Authority,
            PostLogoutRedirectUri = redirectUri,
            RedirectUri = redirectUri,

            Notifications = new OpenIdConnectAuthenticationNotifications()
            {
                //
                // If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
                //
                AuthorizationCodeReceived = OnAuthorizationCodeReceived,
                AuthenticationFailed = OnAuthenticationFailed
            }
        });
}

private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context)
{
    context.HandleResponse();
    context.Response.Redirect("/Home/Error?message=" + context.Exception.Message);
    return Task.FromResult(0);
}

Однако, когда я делаю это

AuthenticationFailed = OnAuthenticationFailed

Iполучаю следующую ошибку: Ошибка CS0123 Нет перегрузки для 'OnAuthenticationFailed' соответствует делегату 'Func , Task>'

Я не понимаю, почему это происходиттак как типы совпадают здесь.Все это начало происходить с тех пор, как я обновил Owin 4.0.1, а также все Microsoft.IdentityModel и System.IdentityModel до 5.4.0.

Я знаю, что в версии 5.X произошли серьезные изменения, но ядумаю, что все решено в версии 5.4.0, и это единственная проблема, которую я оставил.

1 Ответ

0 голосов
/ 11 марта 2019

У меня была такая же проблема.После обновления Microsoft.IdentityModel тип OpenIdConnectMessage находится в другом пространстве имен: Microsoft.IdentityModel.Protocols. OpenIdConnect

Приветствия, Gijs Stoeldraaijers

...