我正在创建一个Web应用程序(javascript / HTML),使我能够代表用户管理Azure资源。我想使用MSAL登录用户并获取Azure资源管理器的访问令牌。这可能吗?当我尝试以下代码时,弹出窗口仅限于工作/学校登录(我希望所有帐户都可以访问),并且在我使用工作电子邮件时指出该组织不支持该应用_____,因此失败,因为该应用处于非托管状态状态。
这是我的工作:
我创建了一个MSAL对象。
var myMSALObj = new Msal.UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, acquireTokenRedirectCallBack,
{storeAuthStateInCookie: true, cacheLocation: "localStorage"});
然后我打电话给loginPopup并传递management.azure.com作为范围。
myMSALObj.loginPopup("https://management.azure.com/.default")
.then(
function (idToken){
myMSALObj.acquireTokenSilent("https://management.azure.com/.default")
})
注意:我还尝试将范围设置为:https://management.azure.com/user_impersonation。
我已经注册了Azure应用,清单中指定了requiredResourceAccess以包括Azure服务管理,并且“ signInAudience”设置为“ AzureADandPersonalMicrosoftAccount”。
如何将MSAL登录用于请求访问Azure资源的范围?
答案 0 :(得分:0)
我想使用MSAL登录用户并获取访问令牌 Azure资源管理器。这可能吗?
是的,有可能。
如何将MSAL登录与要求访问azure的范围一起使用 资源?
范围https://management.azure.com/.default
是正确的。确保授权为https://login.microsoftonline.com/common
。我认为您在注册该应用程序时可能会错过一些东西。您可以参考此document进行再次检查。
更新
以下是详细步骤,供您参考。
3。使用此客户端ID更新代码。
var applicationConfig = {
clientID: '2ac327fd-4803-4ed3-****31fc8dfbbf18', //This is your client ID
authority: "https://login.microsoftonline.com/common",
Scopes: ["https://management.azure.com/.default"]
};
var myMSALObj = new Msal.UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, acquireTokenRedirectCallBack,
{ storeAuthStateInCookie: true, cacheLocation: "localStorage" });
function signIn() {
myMSALObj.loginPopup(applicationConfig.graphScopes).then(function (idToken) {
//Login Success
showWelcomeMessage();
acquireTokenPopupAndCallMSGraph();
}, function (error) {
console.log(error);
});
}
现在,您将能够通过Azure AD和个人帐户登录工作和学校帐户。