【问题标题】:Whats wrong with my reply-url for AAD auth?我的 AAD 身份验证回复网址有什么问题?
【发布时间】:2018-11-02 03:42:51
【问题描述】:

我正在尝试在我的应用程序中使用 AAD 身份验证,当我在 VS 中本地运行它并且我可以登录时它工作正常,但是当我将它发布到 azure appservice 并尝试访问应用程序时,我收到错误消息回复 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,它是来自 appservice 的应用 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 添加到我在 appservice 中的回复 URL 后,我在部署时收到以下错误消息

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

【问题讨论】:

  • 您的 Web 应用主页 URL 是什么?你能发布你指的是哪个样本吗?一般回复url应该是<the Home page URL of your App>/signin-oidc
  • 在 Azure 门户中转到 Azure AD -> 应用注册,然后单击有问题的应用,它在那里有一个主页属性,这就是我所指的
  • 主页不应该只是在那里。您应该直接查看 Web App。例如。您的网络应用程序在哪里发布?主页应该只是您的 Web 应用的 URL。
  • 我发布到 azure 应用服务,这是它分配给我的应用的 URL
  • 因此,如果您的 Azure Web 应用程序的 URL 是 https://xxx.azurewebsites.net,则回复 url 应该类似于 https://xxx.azurewebsites.net/signin-oidc

标签: c# azure azure-web-app-service azure-active-directory


【解决方案1】:

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

http(s)://localhost:{port}/signin-oidc

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

https://{your-webapp-name}.azurewebsites.net/signin-oidc

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

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

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

另外,为了解决详细错误,您可以Enable diagnostics logging for web apps in Azure App Service

【讨论】:

  • 就是这样,我都启用了,当我禁用应用程序服务时,一切都按预期工作,这让我问我什么时候应该使用应用程序服务,什么时候不应该?跨度>
  • 当通过 Web 应用托管您的 Web 应用程序时,我更愿意选择内置的应用服务身份验证,而无需在我的代码中添加身份验证中间件。但是,如果您在 azure app 服务之外托管应用程序,则无法利用此功能,您可能需要在代码中手动添加身份验证中间件。在代码中启用身份验证时,您可以获得更好的灵活性,并且可以以编程方式初始化身份验证设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 2019-01-13
  • 2019-04-23
  • 2011-01-23
相关资源
最近更新 更多