【发布时间】: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