Аутентификация/авторизация EntraId через .NET и ReactC#

Место общения программистов C#
Ответить
Anonymous
 Аутентификация/авторизация EntraId через .NET и React

Сообщение Anonymous »

Я авторизую пользователей через EntraId во внешнем интерфейсе с помощью React. Это работает хорошо, но теперь я хочу отправить токен доступа через заголовок авторизации на серверную часть, это тоже работает.
Теперь серверной части необходимо проверить токен, и тут все начинает усложняться.
Во-первых, все, что я получаю ошибку 401 (неавторизованный) с заголовком «WWW-Authenticate» (Responseheader)

Код: Выделить всё

WWW-Authenticate: Bearer error="invalid_token", error_description="The signature is invalid
.
После этого серверная часть показывает эту ошибку:

Код: Выделить всё

info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10243: Reading issuer signing keys from validation parameters.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10265: Reading issuer signing keys from configuration.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10243: Reading issuer signing keys from validation parameters.
fail: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10511: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey, KeyId: '3PaK4EfyBNQu3CtjYsa3YmhQ5E0', InternalId: '3PaK4EfyBNQu3CtjYsa3YmhQ5E0'. , KeyId: 3PaK4EfyBNQu3CtjYsa3YmhQ5E0
'.
Number of keys in TokenValidationParameters: '0'.
Number of keys in Configuration: '8'.
Matched key was in 'Configuration'.
kid: '3PaK4EfyBNQu3CtjYsa3YmhQ5E0'.
Exceptions caught:
'[PII of type 'System.String' is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
token: '[PII of type 'Microsoft.IdentityModel.JsonWebTokens.JsonWebToken' is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'. See https://aka.ms/IDX10511 for details.
Я уже пробовал менять конфигурации:

Код: Выделить всё

/*builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration);*/

/*builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration, "AzureAd");
*/

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();

/*builder.Services.AddAuthorization(config =>
{
config.AddPolicy("AuthZPolicy", policyBuilder =>
policyBuilder.Requirements.Add(new ScopeAuthorizationRequirement() { RequiredScopesConfigurationKey = $"AzureAd:Scopes" }));
});*/
некомментированные также являются попытками, которые не сработали.
Токен доступа отправляется с аксиомами:

Код: Выделить всё

axios.interceptors.request.use(async config => {
const authToken = await instance.acquireTokenSilent({
scopes: ['openid', 'profile', 'email']
});
console.log(authToken.accessToken);
const accessToken = authToken.accessToken;
config.headers.Authorization = `Bearer ${accessToken}`;
return config;
});
Я перепробовал буквально все возможное, но ошибка осталась.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -net-react
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»