Где получить URI перенаправления и / или ClientId существующего основного приложения Asp.Net - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть существующее веб-приложение asp.net core 2.0, которое использует локальную базу данных для хранения логинов (отдельных учетных записей пользователей). Однако теперь я хочу спрятать страницу приложений за аутентификацией AD.

Я создал другое тестовое приложение, выбрав «рабочие или школьные учетные записи», чтобы увидеть, как это выглядит, используя правильный домен. Это новое приложение позволяет мне сразу войти в систему с моей рабочей учетной записью AD, и поэтому я взял весь соответствующий код из этого нового тестового приложения и поместил его в мое старое приложение, чтобы он направлялся на страницу входа в Microsoft, когда вы нажмите на правильную ссылку на страницу. Кажется, все работает и подключено правильно, за исключением того, что после входа в систему я получаю это сообщение:

AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения: '[ClientId, который я добавил в appsettings]'

Я скопировал также раздел appsettings из тестового проекта для конфигурации AzureAd, но, конечно, мне нужен 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, вместо этого ClientId генерируется автоматически Visual Studio при создании приложения (он все еще работает для входа в систему на тестовое приложение, так что я думаю, мне не нужна лазурь для этого?). Где я могу получить ClientId для существующего приложения? Или как я могу добавить его в существующее приложение? Или создать тот, который будет принят?

Спасибо

РЕДАКТИРОВАТЬ (добавлено из комментария ниже): Спасибо за ваш ответ. Я вошел в лазурный портал. Тестовое приложение, которое я сделал, было там, но не новое приложение, которое было сначала сделано с локальными учетными записями. Итак, я добавил новое приложение, взял его сгенерированный applicationid и поместил его в appsettings как идентификатор клиента. Я также сгенерировал ключ для приложения на портале Azure, но я не уверен, что делать с этим ключом. Теперь кажется, что я могу успешно пройти аутентификацию, так как после входа в систему он дает мне опцию «Вы хотите остаться в системе ...», но затем при перенаправлении он просто работает… неопределенно. думаю, что проблема сейчас с перенаправлением.

URL-адрес ответа на портале Azure просто

https://localhost:44320/signin-oidc

Я просто поместил это там, чтобы имитировать работающее тестовое приложение, которое имеет то же самое, но другое число, (это число соответствует номеру локального хоста, который новое приложение использует при разработке в настройках запуска). В c # в AccountController я перепробовал много вещей, в том числе по умолчанию

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

но перенаправление всегда застревает на Работе ...

Кроме того, как ни странно, теперь каждая ссылка на сайте перенаправляет на имя входа Azure, а не только на одну ссылку, которую я изначально настроил, чтобы перенаправить на действие входа на контроллере аккаунта для Azure, что странно, а не нужное мне поведение. Как мне это исправить?

спасибо

1 Ответ

0 голосов
/ 29 апреля 2018

Другие ответы здесь верны. Если бы вы смогли успешно опубликовать приложение из Visual Studio, идентификатор клиента уже был бы создан. Используйте вашу учетную запись Visual Studio для входа на портал Azure. Затем найдите приложение, выполнив поиск по имени в списке ресурсов или проверив его в разделе «Службы приложений». Когда вы щелкаете в приложении, вам нужно скопировать идентификатор приложения и вставить его в раздел идентификатора клиента в файле web.config. (Идентификатор клиента и идентификатор приложения являются синонимами, даже если они называются по-разному.)

Что касается вопроса об ответном URL, вам просто нужно убедиться, что URI перенаправления и ответные URL совпадают. Обычно вы просто помещаете URL-адрес домашней страницы приложения в оба раздела, если только вы не хотите направлять пользователей куда-либо еще. (Так что это будет просто https://myapp.azurewebsites.net)

...