【问题标题】:AspNet.Security.OpenIdConnect.Server Token Revocation and Logout is not workingAspNet.Security.OpenIdConnect.Server 令牌吊销和注销不起作用
【发布时间】:2019-10-17 00:44:18
【问题描述】:

我已经配置了 revoke 和 logout 端点,如下所述。

.AddOpenIdConnectServer(options =>
{
    options.LogoutEndpointPath = "/logout";
    options.RevocationEndpointPath = "/revoke";
}

但两者都不起作用令牌撤销不会过期/撤销令牌。

对于令牌撤销, 我已经调试了代码,发现它在下面提到的代码中拒绝了 OpenIdConnectServerHandler 类中的上下文。

var context = new ValidateRevocationRequestContext(Context, Scheme, Options, request); await Provider.ValidateRevocationRequest(context);

context.IsRejected 经过上述方法后为真

请求(post)包含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 的撤销逻辑)。

【问题讨论】:

    标签: openid asp.net-core-webapi openid-connect openiddict aspnet-contrib


    【解决方案1】:

    现在我通过调试 ASOS 代码了解到令牌撤销没有内置逻辑,对吗?如果这是这种情况,那么我需要编写我的自定义逻辑来撤销令牌

    没错:ASOS 是完全无状态的。

    如何实施完全由您自己决定。您可以使用表来存储令牌条目,例如 OpenIddict(由 Serialize*Token 事件创建)或带有已撤销令牌标识符的黑名单。

    更多信息在这里:AspNet.Security.OpenIdConnect.Server. Refresh tokens

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2019-01-25
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 2018-09-21
      • 2018-02-05
      相关资源
      最近更新 更多