如何从个人Microsoft帐户验证令牌?

时间:2019-05-16 14:04:40

标签: azure azure-active-directory

我创建了一个API,试图通过AAD保护它。 它已经适用于我组织的帐户和其他组织的帐户,但不适用于个人Microsoft帐户。

我已经尝试了不同的端点,但是如果我希望任何帐户都可以登录,则我认为公用端点应该是正确的端点。

这是我的API启动外观:

            services.AddAuthentication(o =>
            {
               o.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(o =>
            {
                o.Authority = "https://login.microsoftonline.com/common";
                o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    // Both App ID URI and client id are valid audiences in the access token
                    ValidAudiences = new List<string>
                    {
                        "APP ID",
                    },
                    ValidateIssuer = false,
               };
            });

这就是我通过javascript获取访问令牌的方式:

    var applicationConfig = { //Cloudlist API via TestApp
        clientID: "APP ID",        
        authority: "https://login.microsoftonline.com/common",
        graphScopes: ["https://hsde.onmicrosoft.com/APP ID/User"]
    };
    var myMSALObj = new Msal.UserAgentApplication(applicationConfig.clientID, 
    applicationConfig.authority, null, { storeAuthStateInCookie: true, 
    cacheLocation: "localStorage" });

        myMSALObj.loginPopup(applicationConfig.graphScopes).then(function (idToken) { 
            myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
                callAPI(accessToken);;
            });
        }, function (error) {
                console.log(error);
        });

当我使用个人Microsoft帐户登录并使用accessToken调用API时,出现401未经授权错误。 响应头说: www-authenticate:Bearer error =“ invalid_token”,error_description =“未找到签名密钥”

使用个人Microsoft帐户登录时,我需要做些其他改变吗?

1 个答案:

答案 0 :(得分:0)

首先,获取令牌并尝试在jwt.io中进行解码,只是为了检查受众群体ID是否与您在网络api中使用的ID相同。