Использование Azure Active Directory - одно приложение для входа в систему локально и при публикации

Я создаю приложение MVC с использованием аутентификации Azure Active Directory. Когда я разрабатываю локально, я хотел бы иметь возможность входа в систему для тестирования/разработки. И URL-адрес приложения похож на http://localhost:43400. Это также закодировано в приложении AD в Sign-On Url и Reply Url.

Когда я развертываю одно и то же приложение на сервере, URL-адрес приложения изменяется - становится чем-то вроде myappname.azurewebsites.net, и я не могу войти с использованием того же приложения AD. Лучшее, что я мог бы сделать, это пройти процесс входа в систему, но затем AD перенаправляет меня обратно на localhost:43400, что неверно.

В Startup.Auth.cs есть свойство PostLogoutRedirectUri, которое я предоставляю приложению, но оно не имеет никакого значения.

Любой способ иметь локальное приложение и развернутое приложение с использованием того же Azure AD?

Я могу сделать 2 AD Appliquitons с разными URL-адресами и ключами и переписать значения в web.config при развертывании. Но это не похоже на лучшее решение. Что-нибудь еще, что я могу сделать?

UPD

Вот бит, на который я ссылаюсь в Startup.Auth.cs:

app.UseOpenIdConnectAuthentication(
 new OpenIdConnectAuthenticationOptions
 {
 ClientId = clientId,
 Authority = Authority,
 PostLogoutRedirectUri = postLogoutRedirectUri, // <-- this is coming from web.config, different in dev and prod
 Notifications = new OpenIdConnectAuthenticationNotifications()
 {
 .....
 }
 });

См. полный список кодов здесь.

И в приложении Azure AD я одновременно пробовал оба адреса как URL-адрес ответа:

Но AD использовал только один из адресов для перенаправления, хотя клиент указал перенаправление, соответствующее одной из записей.

1 ответ

Вы можете добавить несколько URL-адресов для перенаправления своего приложения, поэтому свойство реализовано в виде списка! Вам просто нужно убедиться, что вы укажете, какой URI использовать во время выполнения. Вы можете сделать это по-разному - вы можете указать возвращаемый URI в момент времени промежуточного программного обеспечения или добавить динамический код, который будет вводить URI переадресации в сообщении для входа. Пример последнего подхода см. В статье RedirectToIdentityProvider в https://github.com/AzureADSamples/WebApp-MultiTenant-OpenIdConnect-DotNet/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs

licensed under cc by-sa 3.0 with attribution.