Я создал 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?