使用Azure Active Directory - 一个应用程序在本地登录和发布时

时间:2015-09-09 16:53:52

标签: c# asp.net azure oauth azure-active-directory

我正在使用Azure Active Directory身份验证构建MVC应用程序。当我在本地开发时,我希望能够登录进行测试/开发。应用网址与http://localhost:43400类似。这也在Sign-On UrlReply Url中的AD应用程序中进行编码。

当我将同一个应用程序部署到服务器时,应用程序网址已更改 - 变为myappname.azurewebsites.net,我无法使用相同的AD应用程序登录。我能管理的最好的办法是通过登录过程,然后AD将我重定向回localhost:43400,这是错误的。

我在PostLogoutRedirectUri中有Startup.Auth.cs个属性,但它没有任何区别。

使用相同的Azure AD获得本地应用程序和部署的应用程序的任何方法

我可以使用不同的网址和密钥执行2个AD Applica,并在部署时重写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()
        {
            .....

        }
    });

请参阅完整代码列表here

在Azure AD应用程序中,我同时尝试将这两个地址作为回复URL: Azure AD Application Reply URL

但AD只使用其中一个地址进行重定向,即使客户端指定了与其中一个记录匹配的重定向。

1 个答案:

答案 0 :(得分:9)

您可以向您的应用添加多个重定向uri,这就是该属性作为列表实现的原因!您只需确保指定在运行时使用的URI。您可以通过多种方式执行此操作 - 您可以在中间件初始化时指定返回URI,也可以添加将在登录消息中注入重定向URI的动态代码。有关后一种方法的示例,请参阅https://github.com/AzureADSamples/WebApp-MultiTenant-OpenIdConnect-DotNet/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs中的RedirectToIdentityProvider