【问题标题】:Where to get the Redirect URI and/or ClientId of an existing Asp.Net Core App从哪里获取现有 Asp.Net Core 应用程序的重定向 URI 和/或 ClientId
【发布时间】:2018-10-08 18:58:46
【问题描述】:

我有一个现有的 asp.net core 2.0 Web 应用程序,它使用本地数据库来存储登录信息(个人用户帐户)。但是,我现在想在 AD 身份验证后面的应用程序上隐藏一个页面。

我使用正确的域创建了另一个选择“工作或学校帐户”的测试应用,以查看其外观。那个新应用程序让我可以立即使用我的工作 AD 帐户登录,因此我从那个新的测试应用程序中获取了所有相关代码,并将其放入我的旧应用程序中,以便当你访问该 Microsoft 登录页面时,它会路由到该 Microsoft 登录页面单击正确的页面链接。一切似乎都正常工作并且连接正确,除了登录后我收到以下消息:

AADSTS50011:请求中指定的回复 url 与为应用配置的回复 url 不匹配:'[the ClientId I put in appsettings]'

我还从 AzureAd 配置的测试项目中复制了 appsettings 部分,但我当然需要现有项目的 ClientId,而不是来自测试项目。相关的 appsettings 部分如下所示:

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "XXXX.com",
    "TenantId": "XXXXXXXXXXXXXXXXX", //this seems to be the same everywhere and is fine?
    "ClientId": "XXXXXXXXXXXXXXXXX", //this is app specific and generated automatically when the app is created?
    "CallbackPath": "/signin-oidc"
  },

我的问题是,我在哪里可以找到我现有应用程序的 ClientId?我看到的每个答案都说你必须在 Azure 中获取或设置它,但我们实际上并不使用 Azure,而是在我创建应用程序时由 Visual Studio 自动生成 ClientId(它仍然适用于登录测试应用程序,所以我想我不需要天蓝色吗?)。从哪里获取现有应用程序的 ClientId?或者,如何将其添加到现有应用程序中?或者生成一个会被接受的?

谢谢

EDIT(从下面的评论中添加): 感谢您的答复。我已登录 azure 门户。我制作的测试应用程序在那里,但不是最初使用本地帐户制作的新应用程序。因此,我添加了新应用程序,将其生成的 applicationid 放入 appsettings 作为客户端 ID。我还在 azure 门户中为应用程序生成了一个密钥,但我不确定如何处理该密钥。现在看来,虽然我能够成功进行身份验证,但在登录后它给了我“你想保持登录状态......”选项,但是在重定向时它只是工作......无限期地。所以我认为现在的问题是重定向。

我在天蓝色门户中的回复网址只是

https://localhost:44320/signin-oidc

我只是把它放在那里以模仿具有相同内容但编号不同的工作测试应用程序(此数字与新应用程序在启动设置中在开发中使用的本地主机号匹配)。在 AccountController 的 c# 中,我尝试了很多东西,包括默认的

var redirectUrl = Url.Action(nameof(HomeController.Index), "Home");

但是重定向总是卡在 Working...

另外,奇怪的是,现在网站上的每个链接都重定向到 azure 登录,而不仅仅是我最初设置的一个链接,用于重定向到用于 azure 的 accountcontroller 上的登录操作,这很奇怪,而不是我需要的行为。我该如何解决?

谢谢

【问题讨论】:

  • 它抱怨的回复url是在azure门户中注册的。您需要更新它以指向您的其他应用程序。
  • 我创建应用程序时 Visual Studio 会自动生成 ClientId -> VS 会在 Azure 上为您创建应用程序注册。所以你仍然可以在门户中查找它。
  • 自从登录成功后,您显然有一些 Azure AD 租户 :) 使用您的工作 AD 帐户登录到 portal.azure.com。

标签: azure authentication asp.net-core active-directory


【解决方案1】:

这里的其他答案都是正确的。如果您能够从 Visual Studio 成功发布应用程序,则已经生成了一个客户端 ID。使用您的 Visual Studio 帐户登录 Azure 门户。然后通过从资源列表中搜索名称或在“应用服务”刀片下查看来找到该应用。单击应用程序时,您需要复制应用程序 ID 并将其粘贴到 web.config 中的客户端 ID 部分。 (客户端 ID 和应用程序 ID 是同义词,即使它们的名称不同。)

关于回复 URL 问题,您只需要确保重定向 URI 和回复 URL 匹配即可。通常,您只需将应用程序主页 URL 放在这两个部分中,除非您想将用户引导到其他地方。 (所以它只是https://myapp.azurewebsites.net

【讨论】:

  • 感谢您的回复。我已登录 azure 门户。我制作的测试应用程序在那里,但不是最初使用本地帐户制作的新应用程序。所以,我添加了新的应用程序,将它生成的 applicationid 作为客户端 ID 放在 appsettings 中。我还在 azure 门户中为应用程序生成了一个密钥,但我不确定如何处理该密钥。现在看来,虽然我能够成功登录,但在登录后它给了我“你想保持登录状态......”选项,但然后重定向它只是在工作......无限期地。
  • 你的意思是它无限期地重定向?您需要确保回复 URL 部分和 webconfig(RedirectURI 部分)中的 URL 匹配。我认为您不需要添加密钥,除非您使用的是客户端密钥(在这种情况下,您需要复制密钥并将其粘贴到 web.config 中的客户端密钥值中)。你检查过这个文档吗? github.com/Azure-Samples/…(请忽略文档中使用 localhost 的部分。)
  • 感谢 Marilee,我发现了路由问题,我最终在登录后路由回登录,因此循环。据我所知,现在一切正常。再次感谢!
猜你喜欢
  • 2015-07-12
  • 2016-09-23
  • 2017-10-15
  • 1970-01-01
  • 2018-08-25
  • 2013-05-21
  • 1970-01-01
  • 2022-10-24
  • 2011-04-13
相关资源
最近更新 更多