Я настроил конечные точки отзыва и выхода, как указано ниже.
.AddOpenIdConnectServer(options =>
{
options.LogoutEndpointPath = "/logout";
options.RevocationEndpointPath = "/revoke";
}
Но оба не работают. Отзыв токена не является истечением срока действия/отзывом токена.
Для отзыва токена я отладил код и обнаружил, что он отклоняет контекст в классе OpenIdConnectServerHandler в приведенном ниже коде.
var context = new ValidateRevocationRequestContext(Context, Scheme, Options, request); await Provider.ValidateRevocationRequest(context);
context.IsRejected имеет значение true после вышеуказанного метода
Запрос (сообщение) содержит clientId, clientsecret, токен в качестве токена доступа или токена обновления и token_hint_type. Я не могу сделать вывод, почему это происходит?
Обновление 1:
Сделана проверка контекста с помощью приведенного ниже кода.
public override async Task ValidateRevocationRequest(ValidateRevocationRequestContext context) { context.Validate(); }
Теперь я узнал, отлаживая код ASOS, что нет встроенной логики для отзыва токена, я прав? если это сценарий, то мне нужно написать собственную логику, чтобы отозвать токен в
public override async Task HandleRevocationRequest(HandleRevocationRequestContext context) {.. code }
Теперь мне интересно, как отозвать токен (доступ и обновление), потому что они автономны и не хранятся в БД, как openiddict (я просмотрел логику отзыва openiddict).