使用 JavaScript 在 AAD 中自动创建新的应用注册



我只想在遵循另一条路径(分布式应用程序或多租户网站)之前确保以下内容是不可能的。

我有一个 Web 应用插件,需要运行一些自动设置,例如在当前租户中创建新的应用注册,这反过来需要访问Microsoft图形 API,这需要使用 Directory.ReadWrite.All 等进行现有的应用注册。

我希望我可以使用我自己的租户的多租户应用注册来实现此目的。

但是,我似乎无法使用隐式授权流,因为重定向/回复 URL 是未知的(该插件交付给数百个客户,每个客户可能有很多环境)。

该插件只能使用C#和JS,但是,C#部分是"隔离的",因此无法显示(Web)表单。 ADAL 和 MSAL for .NET 都无法打开登录窗口,因为它不在用户交互模式下运行。

我已经将ADAL用于JS,但是,它似乎不支持本机客户端(非Web RedirectURI)。

我还尝试将 MSAL for JS 与 https://login.microsoftonline.com/common/oauth2/nativeclient(登录成功,但是对话框挂起,因为 JS 无法访问它,跨域请求)和 urn:ietf:wg:oauth:2.0:oob(登录后显示"打开应用程序")。我已经在IE中禁用了"保护模式"。

谢谢

>OAuth要求你有一个"已知目的地"来发送用户。如果没有这个,很容易通过劫持redirect_uri来创建中间人攻击,使其指向恶意站点并在用户不知情的情况下捕获其令牌。

在多租户方案中使用授权代码或隐式授权时,你还希望托管它们被重定向的页面。您的站点会捕获他们需要的令牌,然后将其重定向回他们的应用程序。

此工作流的关键是在state参数中对最终目标进行编码。您的服务器接收令牌,从state参数解码最终指定,然后将其重定向到该位置。

最新更新