Как проверить токен из личной учетной записи Microsoft? - PullRequest
0 голосов
/ 16 мая 2019

Я создал API, который я пытаюсь защитить с помощью AAD. Он уже работает для учетных записей моей организации и учетных записей других организаций, но не для личных учетных записей Microsoft.

Я уже пробовал разные конечные точки, но я думаю, что общая конечная точка должна быть правильной конечной точкой, если я хочу, чтобы любая учетная запись могла войти в систему.

Вот так выглядит мой API Startup:

            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: ошибка носителя = "invalid_token", error_description = "Ключ подписи не найден"

Нужно ли что-то делать по-другому при входе в личную учетную запись Microsoft?

1 Ответ

0 голосов
/ 16 мая 2019

Сначала получите токен и попробуйте расшифровать его в jwt.io, чтобы проверить, совпадает ли идентификатор аудитории с тем, который вы используете в своем веб-интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...