Azure AD 重定向 URL 使用应用程序网关
Azure AD Redirect URL Using Application Gateway
我们有一个 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,我是否需要额外的登录步骤,或者我是否应该更改应用以接受 AzureAppProxyUserSessionCookie
或 AzureAppProxyAccessCookie
? (如果这甚至是一种选择?)
感谢评论中的 rfcdejong 让我走上正轨。在我们的例子中,我可以通过覆盖 OnRedirectToIdentityProvider
事件并在 ConfigureServices
中提供代理 url 来将 Azure AD 与 Azure 应用程序网关一起使用
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
};
}
})
需要配置 return URI 以匹配 Azure 门户中的应用程序。
还需要分配用户,但现在无需直接访问服务器即可在任何地方使用内部应用程序。
我们有一个 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,我是否需要额外的登录步骤,或者我是否应该更改应用以接受 AzureAppProxyUserSessionCookie
或 AzureAppProxyAccessCookie
? (如果这甚至是一种选择?)
感谢评论中的 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
};
}
})
需要配置 return URI 以匹配 Azure 门户中的应用程序。 还需要分配用户,但现在无需直接访问服务器即可在任何地方使用内部应用程序。