OIDC: 401 несанкционированное исключение при доступе к конечной точке userinfoC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 OIDC: 401 несанкционированное исключение при доступе к конечной точке userinfo

Сообщение Anonymous »

Я столкнулся с проблемой при внедрении аутентификации OIDC в ​​моем монолитном веб -приложении. Я использую KeyCloak, и пользователь может получить к нему доступ через публичный URL. Веб -приложение может получить доступ только к частному URL. Вся логика связи Auth обрабатывается этим конкретным монолитом. с EssuerAddress Изменен на публичный URL -адрес keyCloak
Вот мой OIDC Конфигурация: < /p>

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

private void ConfigureOptions(OpenIdConnectOptions options)
{
options.Authority = _options.RealmUrl; // the URL is private
options.ClientId = _options.ClientId;
options.RequireHttpsMetadata = _options.SslRequired;
options.ClientSecret = _options.Secret;
options.GetClaimsFromUserInfoEndpoint = true;
options.ResponseType = OpenIdConnectResponseType.Code;
options.UsePkce = true;
options.SaveTokens = true;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.SignOutScheme = CookieAuthenticationDefaults.AuthenticationScheme;

options.TokenValidationParameters = new TokenValidationParameters
{
ClockSkew = _options.TokenClockSkew,
ValidateAudience = _options.ValidateAudience,
ValidateIssuer = false,
NameClaimType = ClaimHelper.Login,
RoleClaimType = ClaimHelper.Role
};

options.Events.OnRedirectToIdentityProvider = OnRedirectToIdentityProvider;
}
< /code>
А вот и onredirecttoidentityprovider handler: < /p>

private Task OnRedirectToIdentityProvider(RedirectContext ctx)
{
return RedirectToIdentityProvider(ctx, ctx.HandleResponse);
}

private Task RedirectToIdentityProvider(RedirectContext ctx, Action handleResponseAction)
{
var msg = new OpenIdConnectMessage
{
ClientSecret = _options.Secret,
ClientId = _options.ClientId,
ResponseType = OpenIdConnectResponseType.Code,
Scope = "openid email profile roles",
ResponseMode = "form_post",
IssuerAddress = _configuration.GetSection(PublicAuthorizationEndpointUrl).Value, // here I set the public KeyCloak URL
RedirectUri = "https" + Uri.SchemeDelimiter + ctx.Request.Host + ctx.Request.PathBase + "/signin-oidc",
Nonce = Guid.NewGuid().ToString("N"),
RequestType = OpenIdConnectRequestType.Authentication
};

var properties = new AuthenticationProperties();
properties.Items[OpenIdConnectDefaults.RedirectUriForCodePropertiesKey] = msg.RedirectUri;

msg.State = ctx.Options.StateDataFormat.Protect(properties);
var url = msg.CreateAuthenticationRequestUrl();

ctx.Response.Redirect(url);

handleResponseAction.Invoke();

return Task.CompletedTask;
}
К сожалению, он не работает и не работает при доступе к конечной точке userinfo: возвращается ошибка 401 . Расследование источников, я обнаружил, что исключение, вероятно, было отменено методом OpenIdConnecthandler.openidConnecthandler : https://github.com/dotnet/aspnetcore/bl ... r.cs#l1057.> Я предполагаю, что это связано с неправильно сгенерированный токен доступа, как это объясняется здесь: https://www.ibm.com/docs/en/was-liberty ... id-connect. Но у меня нет идей о том, как это исправить.
Я буду признателен за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/794 ... o-endpoint
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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