7

我们有一个 ASP Core 2.0 应用程序,可以在专用网络上与 Azure AD 很好地配合使用。但是,我们一直在使用 Azure 应用程序网关,研究允许远程工作人员从外部访问应用程序的可能性等。

我们已经在网关上注册了应用程序,一旦使用 Azure AD 登录,匿名首页就可以通过ourapp.msappproxy.net. 但是,当在应用程序中登录(再次?)时,客户端被重定向回intervalServer/signin-oidc失败,因为它无法从外部访问。

虽然我怀疑这是解决方案的任何部分,但我尝试将重定向覆盖"CallbackPath": "/signin-oidc", 到绝对路径ourapp.msappproxy.net/signin-oidc,但我似乎无法弄清楚如何。更改 Azure 门户中的回复 URL 也无济于事(尽管我怀疑它会这样做,这只是为了验证,对吧?)。

在这种特定情况下,我似乎找不到任何关于此的指导,所以这将是受欢迎的。否则,我会考虑以下问题:

1,如果我可以将重定向更改为ourapp.msappproxy.net/signin-oidc,那会解决登录问题吗?

2,我什至需要额外的登录步骤,还是应该将应用程序更改为接受AzureAppProxyUserSessionCookieAzureAppProxyAccessCookie?(如果这甚至是一种选择?)

4

1 回答 1

5

感谢评论中的 rfcdejong 让我走上正轨。在我们的例子中,我可以通过覆盖OnRedirectToIdentityProvider事件并在ConfigureServices

services.AddAuthentication(...)
          .AddOpenIdConnect(options =>
         {
           options.ClientId = Configuration["Authentication:AzureAD:ClientId"];
           options.Authority = Configuration["Authentication:AzureAd:Authority"];
           options.CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"];

           if (IsProduction) // So that I can use the original redirect to localhost in development
           {
             Task RedirectToIdentityProvider(RedirectContext ctx)
             {
               ctx.ProtocolMessage.RedirectUri = "https://ourapp.msappproxy.net/signin-oidc";
               return Task.FromResult(0);
             }

             options.Events = new OpenIdConnectEvents
             {
               OnRedirectToIdentityProvider = RedirectToIdentityProvider
             };
           }
          })

返回 URI 需要配置为与 Azure 门户中的应用匹配。还需要分配用户,但内部应用程序现在可以在任何地方使用,而无需直接访问服务器。

于 2019-01-29T19:08:02.340 回答