AADSTS50011:请求中指定的回复URL与为应用程序配置的回复URL不匹配:'

时间:2019-01-15 15:11:30

标签: azure azure-devops azure-active-directory azure-web-sites

我已经创建了一个API应用程序并将其部署到Azure。该应用程序使用Active Directory身份验证。
 我收到以下错误

AADSTS50011: The reply url specified in the request does not match the reply urls configured for the application: 00000000-0000-4f27-0000-00000000.

到目前为止的步骤

  • 启用了Active Directory身份验证
  • 将CORS设置为*
  • 将回复URL设置为相同的地址https://myapp.azurewebsites.net/
  • 我已在网络配置中添加了以下设置

config

  <add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}"></add>
    <add key="ida:PostLogoutRedirectUri" value="https://myapp.azurewebsites.net/"></add>

api的代码如下

[HttpGet]
        [SwaggerResponse(HttpStatusCode.OK,
            Type = typeof(IEnumerable<Contact>))]
        public async Task<IEnumerable<Contact>> Get()
        {
            return await GetContacts();
        }

5 个答案:

答案 0 :(得分:0)

获取Fiddler跟踪,当您尝试对应用程序进行身份验证时浏览器会经历什么。应该向AAD发出请求以要求身份验证的请求,其中还应包括一个答复URL。确保它与您在AAD中配置的应用程序相同。

答案 1 :(得分:0)

是否已在web.config上设置了以下键和值。 key =“ ida:RedirectUri” value =“ https://myapp.azurewebsites.net/”

答案 2 :(得分:0)

遇到相同的错误,解决方法是:

转到Azure门户:https://portal.azure.com登录并单击左侧的Azure Active Directory图标。然后点击中间窗格中的“应用注册”图标。在搜索框中,从错误消息中输入应用程序,然后从下拉菜单中选择“所有应用程序”:

点击您的应用程序,然后点击“设置”图标,从列表中选择“答复网址”。

复制一个回复URL,并将其作为 https 端口添加到您的应用程序中。

您可以从项目的属性中执行此操作,也可以仅在lounchsetting.json文件中添加sslPort值

答案 3 :(得分:0)

在AAD应用程序注册上,将AAD身份验证回调附加到您的Reply URI值。最初,我将我的设置为:

https://my-app.azurewebsites.net

然后我将其更新为:

https://my-app.azurewebsites.net/.auth/login/aad/callback

之后,该错误已清除,我可以调用我的API端点。

答案 4 :(得分:0)

我在学习 MS 教程 Call the Microsoft Graph API from a Windows Desktop app 时遇到了同样的问题。我的代码中没有提供重定向 url 的地方,除了这一行

.WithDefaultRedirectUri();

将鼠标悬停在它上面时,我可以看到 https://login.microsoftonline.com/common/oauth2/nativeclient,这是一个重定向 uri,存在于我的 Azure 应用程序中。这一切都非常令人困惑,我在网上的任何地方都没有找到答案。经过大约 3 个小时的搜索答案并在代码中尝试了多种可能性后,我在我下载的文件之一中发现了此评论:

// Requires redirect URI "ms-appx-web://microsoft.aad.brokerplugin/{client_id}" in app registration

所以我去了 https://ms.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Authentication/appId/171axxxx-xxxx-xxxx-xxxx-xxxxxxxxafff/isMSAApp/ 并在 Authentication >Redirect URIs 下添加了重定向 URI ms-appx-web://microsoft.aad.brokerplugin/171axxxx-xxxx-xxxx-xxxx-xxxxxxxxafff。

接下来我像这样修改了我的代码:

public partial class App : Application
    {
        // Below are the clientId (Application Id) of your app registration and the tenant information. 
        // You have to replace:
        // - the content of ClientID with the Application Id for your app registration
        // - The content of Tenant by the information about the accounts allowed to sign-in in your application:
        //   - For Work or School account in your org, use your tenant ID, or domain
        //   - for any Work or School accounts, use organizations
        //   - for any Work or School accounts, or Microsoft personal account, use common
        //   - for Microsoft Personal account, use consumers
        private static string ClientId = "171axxxx-xxxx-xxxx-xxxx-xxxxxxxxafff";

        // Note: Tenant is important for the quickstart.
        private static string Tenant = "72f9xxxx-xxxx-xxxx-xxxx-xxxxxxxxdb47"; //also works with "common"
        private static string Instance = "https://login.microsoftonline.com/";
        private static IPublicClientApplication _clientApp;


        static App()
        {
            CreateApplication(true);
        }


        public static void CreateApplication(bool useWam)
        {
            //initialize MSAL
            var builder = PublicClientApplicationBuilder.Create(ClientId)
                .WithAuthority($"{Instance}{Tenant}")
                .WithDefaultRedirectUri();

            if (useWam)
            {
                builder.WithExperimentalFeatures();
                builder.WithBroker(true);  // Requires redirect URI "ms-appx-web://microsoft.aad.brokerplugin/{client_id}" in app registration
            }
            _clientApp = builder.Build();
            TokenCacheHelper.EnableSerialization(_clientApp.UserTokenCache);
        }

        

        public static IPublicClientApplication PublicClientApp { get { return _clientApp; } }
    }

我不知道为什么 Azure 不只是将其添加到其他重定向中,因为他们知道需要这样做,或者至少将这一步包含在说明中,但希望这对其他人有帮助错误。