使用Azure AD身份验证时,防伪验证失败

时间:2017-08-18 06:25:08

标签: azure azure-active-directory

我们正在AAD身份验证的应用程序中实施Html.AntiForgeryToken()。登录工作正常,但是当我们单击主页上的按钮时,它需要调用控制器操作。它无法通过以下异常调用控制器操作。有什么想法解决这个问题吗?

错误:

  

[HttpAntiForgeryException(0x80004005):提供的防伪令牌适用于用户“xyz@microsoft.com”,但当前用户为“”。]

html:

using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl })) {
            @Html.AntiForgeryToken()
            <div id="LoginList">
                <p>
                    @foreach (AuthenticationDescription p in loginProviders) {
                        <md-button type="submit" class="btn facebook-theme-background" id="@p.AuthenticationType" name="provider" value="@p.AuthenticationType" title="Log in using your @p.Caption account">Login with @p.AuthenticationType</md-button>
                    }
                </p>
            </div>
        }

服务器端:甚至没有输入此方法。当我评论ValidateAntiForgeryToken时,它正在进入。

    [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult ExternalLogin(string provider, string returnUrl)
        {
}

使用以下两个属性进行身份验证:

    <add key="Tenant" value="xyz.onmicrosoft.com" />
<add key="Audience" value="<guid>" />

1 个答案:

答案 0 :(得分:0)

我正在尝试重现此问题,但失败了。似乎问题与代码有关。您可以从this link参考适用于我的代码示例。

如果您仍有问题,可以分享一个可运行的演示来帮助重现此问题。