我的 AAD 身份验证回复 URL 有什么问题?

Mat*_*han 3 c# azure azure-active-directory azure-web-app-service

我正在尝试在我的应用程序中使用 AAD 身份验证,当我在 VS 中本地运行它时它工作正常并且我可以登录,但是当我将它发布到 azure 应用程序服务并尝试访问该应用程序时,我收到错误消息,回复 -到 URL 不匹配。

这是我的 appsettings.json 部分

 "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "xxxxx.me",
    "TenantId": "xxxxx",
    "ClientId": "xxxx",
    "CallbackPath": "/signin-oidc",
    "ClientSecret": "xxxxx",
    "AppIDURL": "https://xxxxx.me/yyyyyBackend",
    "ConfigView": "MVC"
Run Code Online (Sandbox Code Playgroud)

在应用程序注册中,我添加了回复 URL,它是来自 appservice 的应用程序 URL,我还添加了

https://xxxxx.me/yyyyyBackend/signin-oidc
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用所以我现在有点困惑

我必须添加另一个回复 URL 吗?

* 编辑 *

使用 fiddler 并在应用程序尝试进​​行身份验证时查看回调 URL 后,发现它发送以下重定向 URL

https://xxx.azurewebsites.net/.auth/login/aad/callback
Run Code Online (Sandbox Code Playgroud)

我没有在我的项目中指定 /.auth/login/aad/callback ,如果我在 VS 中搜索整个项目,该字符串不会出现在任何地方,所以我完全不知道它为什么发送该重定向 URL?它永远不会工作,因为我的代码中没有任何地方

将该 URL 添加到我在 appservice 中的回复 URL 后,我在部署时收到以下错误消息

You do not have permission to view this directory or page.
Run Code Online (Sandbox Code Playgroud)

Bru*_*hen 5

根据您的描述,我假设您使用 OpenID Connect 中间件从 AAD 租户登录用户,这里是将 Azure AD 集成到 ASP.NET Core Web 应用程序的详细教程。为了在本地运行,您可以为您的 AAD 应用添加以下回复 url:

http(s)://localhost:{port}/signin-oidc
Run Code Online (Sandbox Code Playgroud)

当部署到 azure web 应用程序时,您可能还需要添加以下 URL,正如 Wayne Yang - MSFT 评论的那样:

https://{your-webapp-name}.azurewebsites.net/signin-oidc
Run Code Online (Sandbox Code Playgroud)

使用 fiddler 并在应用程序尝试进​​行身份验证时查看回调 URL 后,发现它发送以下重定向 URL

https://xxx.azurewebsites.net/.auth/login/aad/callback

根据您的更新,您还可以在 Azure 应用服务中启用内置身份验证和授权,通过在 MVC 应用程序中编写最少或不编写代码来帮助您登录用户和访问数据。对于您的情况,由于您的应用程序中使用了 OpenID Connect 中间件进行身份验证,因此您需要禁用 App Service 身份验证,否则可能会遇到意外错误。

此外,为了对详细错误进行故障排除,您可以在 Azure 应用服务中为 Web 应用启用诊断日志记录