我的AAD授权回复URL出了什么问题?

4
我将尝试在我的应用程序中使用AAD身份验证。在我本地运行时,它可以正常工作并且我可以登录。但是当我将其发布到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"

在应用程序注册中,我已经添加了回复URL,这是来自应用服务的应用程序URL,我还添加了。
https://xxxxx.me/yyyyyBackend/signin-oidc

但是两者都不起作用,现在我有点困惑

我需要添加另一个回复URL吗?

* 编辑 *

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

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

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

将该URL添加到我的应用服务答复URL后,在部署时出现以下错误消息:

You do not have permission to view this directory or page.

你的Web App首页URL是什么?你可以发布你参考的示例吗?一般来说,回复URL应该是 <你的App首页URL>/signin-oidc - Wayne Yang
在 Azure 门户中前往 Azure AD -> 应用注册,然后单击相关应用程序,它有一个主页属性,那就是我所指的。 - Matt Douhan
主页不应该只是存在那里。你应该直接查看Web应用程序。例如,你的Web应用程序发布在哪里?主页应该只是你的Web应用程序的URL。 - Wayne Yang
我发布到 Azure 应用服务,这就是它分配给我的应用的 URL。 - Matt Douhan
1
因此,如果您的Azure Web应用程序的URL为https://xxx.azurewebsites.net,则回复URL应该类似于https://xxx.azurewebsites.net/signin-oidc - Wayne Yang
显示剩余3条评论
1个回答

7
根据您的描述,我认为您正在使用OpenID Connect中间件从AAD租户登录用户,以下是详细的教程将Azure AD集成到ASP.NET Core Web应用程序。如果要在本地运行,请为您的AAD应用程序添加以下回复URL:
http(s)://localhost:{port}/signin-oidc

部署到Azure Web应用程序时,您可能还需要按照Wayne Yang - MSFT的评论添加以下URL。
https://{your-webapp-name}.azurewebsites.net/signin-oidc

在使用Fiddler并查看应用程序尝试进行身份验证时的回调URL后,发现它发送以下重定向URL:https://xxx.azurewebsites.net/.auth/login/aad/callback
根据您的更新,还启用了Azure App Service中内置的身份验证和授权,通过在MVC应用程序中编写最少或没有代码,可以帮助您登录用户并访问数据。对于您的情况,由于您在应用程序中使用了OpenID Connect中间件进行身份验证,因此需要禁用App Service身份验证,否则可能会遇到意外错误。
此外,为了解决详细的错误问题,您可以在Azure App Service中为Web应用启用诊断日志记录

就是这样,我已经将两个都启用了,当我禁用应用程序服务身份验证时,一切都按预期工作,这让我想知道何时应该使用应用程序服务身份验证,何时不应该? - Matt Douhan
1
当通过Web应用程序托管您的Web应用程序时,我更喜欢选择内置的App Service身份验证而不是在代码中添加身份验证中间件。但是,如果您将应用程序托管到Azure应用服务之外,您无法利用此功能,可能需要手动在代码中添加身份验证中间件。当在您的代码中启用身份验证时,您可以获得更好的灵活性,并且可以以编程方式初始化身份验证设置。 - Bruce Chen
很酷,如果您正在使用内置身份验证的应用程序服务,如何使用用户特定的AD身份验证调用SQL Server? - user433342

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接