OpenIdConnectAuthenticationNotifications.AuthorizationCodeReceived事件未触发

时间:2017-06-06 17:35:17

标签: azure-active-directory

使用此示例: https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect

在本地运行时,这可以正常工作 但是当我们部署它(azure web app)时,它仍然会进行身份验证,但是OpenIdConnectAuthenticationNotifications.AuthorizationCodeReceived事件没有被触发。

这是代码。

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

            Notifications = new OpenIdConnectAuthenticationNotifications()
            {
                AuthorizationCodeReceived = OnAuthorizationCodeReceived,
                AuthenticationFailed = OnAuthenticationFailed
            }
        });


private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedNotification context)
{
    var code = context.Code;

    ClientCredential credential = new ClientCredential(clientId, appKey);
    string userObjectID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
    AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID));

    Uri uri = new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path));

    AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(code, uri, credential, graphResourceId);
}

这是一个问题,因为它需要缓存令牌以进行出站呼叫。 它没有它,它会抛出。

有一个问题导致这与redir网址后面的尾部斜线相关,但我们已经尝试过了。

所以两个问题...... 1)在什么条件下会发生事件,为什么在本地运行时这会起作用?根据文档,它应该是#34;如果协议消息中存在授权代码,则在安全令牌验证后调用。"
2)调试这个的最佳方法是什么?不知道在这里寻找什么。

1 个答案:

答案 0 :(得分:0)

  

1)在什么条件下事件会被解雇?为什么在本地运行时这会起作用?根据文档,它应该是“如果协议消息中存在授权代码,则在安全令牌验证后调用。”

作为文档点,当Web应用验证协议消息中存在授权代码时,将触发此事件。

  

2)调试此方法的最佳方法是什么?不知道在这里寻找什么。

使用access_token调用请求时,有许多原因可能导致异常。例如,根据您使用NaiveSessionCache的代码,该代码使用Sesstion对象持久化令牌。这意味着当您使用多个实例部署Web应用程序时,您也可能会收到异常。为了解决这个问题,我建议您远程调试项目以找到根本原因。对于远程调试,您可以参考以下文档:

Introduction to Remote Debugging on Azure Web Sites