Как вставить токены в куки в OpenIdConnectC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как вставить токены в куки в OpenIdConnect

Сообщение Anonymous »

Я использую OpenIddict для реализации аутентификации и авторизации в моем IdentityServer, и мне нужно вставить access_token иrefresh_token в файлы cookie. У меня есть класс, который расширяет IOpenIddictServerHandler. В этом классе я перехватываю токены и пытаюсь поместить их в файлы cookie, а затем удалить их из тела ответа. Но в куки они не проставляются, ничего не происходит, но удаление проходит успешно. IdentityServer используется с реагирующим клиентом и API
Код CustomTokenEndpointHandler:
using OpenIddict.Abstractions;
using OpenIddict.Server;

namespace Company.WebApi.CustomToken;

public class CustomTokenEndpointHandler : IOpenIddictServerHandler
{
private readonly IHttpContextAccessor _httpContextAccessor;

public CustomTokenEndpointHandler(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}

public async ValueTask HandleAsync(OpenIddictServerEvents.HandleTokenRequestContext context)
{
if (context.Request == null)
{
throw new NullReferenceException("Request missing in HandleTokenRequestContext");
}

var clientId = context.Request.ClientId;
if (clientId != "logistic_company_react_client")
{
await ValueTask.CompletedTask;
return;
}

var accessToken = context.Transaction.Response?.GetParameter(OpenIddictConstants.Parameters.AccessToken)?.ToString();
var refreshToken = context.Transaction.Response?.GetParameter(OpenIddictConstants.Parameters.RefreshToken)?.ToString();

_httpContextAccessor.HttpContext.Response.OnStarting(() =>
{
if (!string.IsNullOrEmpty(accessToken))
{
_httpContextAccessor.HttpContext.Response.Cookies.Append("access_token", accessToken, new CookieOptions
{
HttpOnly = true,
Secure = false,
SameSite = SameSiteMode.Lax,
Expires = DateTimeOffset.UtcNow.AddHours(1)
});
}

if (!string.IsNullOrEmpty(refreshToken))
{
_httpContextAccessor.HttpContext.Response.Cookies.Append("refresh_token", refreshToken, new CookieOptions
{
HttpOnly = true,
Secure = false,
SameSite = SameSiteMode.Lax,
Expires = DateTimeOffset.UtcNow.AddDays(7)
});
}

context.Transaction.Response?.RemoveParameter(OpenIddictConstants.Parameters.AccessToken);
context.Transaction.Response?.RemoveParameter(OpenIddictConstants.Parameters.RefreshToken);

return Task.CompletedTask;
});

await ValueTask.CompletedTask;
}
}

Фрагмент подключения кода обработчика событий:
services.AddHttpContextAccessor();

services.AddOpenIddict()
.AddServer(options =>
{
options.AddEventHandler(
builder => builder.UseScopedHandler());
...
}


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вставить токены в куки в OpenIdConnect
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Сопоставление ролей OpenIDConnect с конфигурацией MediaWiki PluggableAuth
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Истечение срока действия схемы аутентификации файлов cookie AspNetCore OpenIdConnect
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Истечение срока действия схемы аутентификации файлов cookie AspNetCore OpenIdConnect
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Истечение срока действия схемы аутентификации файлов cookie AspNetCore OpenIdConnect
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

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