是否可以使用单个Azure AD应用程序注册将单个重定向URI用于多个租户和多个Web应用程序?
在我的Azure多租户应用程序注册中,我已达到256个URI的限制,其中每个注册的租户都有自己的一组重定向URI。
重定向URI遵循此模式
阅读Use a state parameter之后,我想到了创建一个新的Web应用程序的方法,该应用程序仅进行身份验证,然后将用户重定向到最初请求的URI。但是无法将OpenId CallbackPath配置为新的auth / authorize / redirect应用。
我应该如何解决?
ASP.NET Core
authenticationBuilder.Services.AddSingleton<IConfigureOptions<OpenIdConnectOptions>, ConfigureAzureOptions>();
authenticationBuilder.AddOpenIdConnect();
private class ConfigureAzureOptions : IConfigureNamedOptions<OpenIdConnectOptions>
{
public void Configure( string name, OpenIdConnectOptions options )
{
options.ClientId = "555-xxx";
options.Authority = "https://login.microsoftonline.com/common";
options.CallbackPath = "https://mydomain/myauth-redir-app/signin-iodc" // this is not allowed
options.Events = new OpenIdConnectEvents
{
OnRedirectToIdentityProvider = ctx =>
{
// remember the URL the user requested, to be picked upp later after AAD auth
ctx.ProtocolMessage.SetParameter("state", "set_org_url");
}
OnTokenValidated = ctx =>
{
// this code should run in myauth-redir-app and pick up the state
// and redirect the user to the originally requested URL
var stateValue = ctx.ProtocolMessage.GetParameter("state");
}
}
}
}
拒绝的解决方案
答案 0 :(得分:0)
这是协议限制,不是Azure AD问题,请检查:https://stackoverflow.com/a/812962/1384539
要解决此问题,您需要重定向到一个中间页面,该页面将处理正确的位置来重定向用户。据我所知,没有其他办法了。
答案 1 :(得分:0)
是通过在Azure门户中的应用程序注册的multi-tenant
窗格上找到Supported account types
开关并将其设置为Authentication
来完成Accounts in any organizational directory
的注册吗?>
对于多租户应用程序,您只需要一个重定向url(原始的)。对于多租户应用程序,该应用程序的初始注册存在于开发人员使用的Azure AD租户中。当来自其他租户的用户首次登录该应用程序时,Azure AD要求他们同意该应用程序请求的权限。如果他们同意,则会在用户的租户中创建称为服务主体的应用程序表示,然后可以继续登录。还会在目录中创建一个委派,记录用户对应用程序的同意。