尝试使用OpenIddict检索刷新令牌时出现内部服务器错误

尝试使用OpenIddict检索刷新令牌时出现内部服务器错误,openiddict,refresh-token,Openiddict,Refresh Token,我正在尝试使用OpenIddict库获取访问和刷新令牌 请求访问令牌时,一切似乎都正常。但是,当添加scope=offline\u访问时,将返回一个500内部服务器错误 使用grant_type=password的邮递员以及用户名和密码集,将返回有效的访问令牌 但是在附加scope=offline\u access之后,状态为500 Internal Server Error 我向注册OpenIddict服务 services.AddOpenIddict(options => {

我正在尝试使用OpenIddict库获取访问和刷新令牌

请求访问令牌时,一切似乎都正常。但是,当添加scope=offline\u访问时,将返回一个500内部服务器错误

使用grant_type=password的邮递员以及用户名和密码集,将返回有效的访问令牌

但是在附加scope=offline\u access之后,状态为500 Internal Server Error

我向注册OpenIddict服务

services.AddOpenIddict(options => {
    options.AddEntityFrameworkCoreStores<dbContext>();
    options.AddMvcBinders();
    options.EnableTokenEndpoint("/connect/token");
    options.AllowPasswordFlow();
    options.AllowRefreshTokenFlow();
    options.AddEphemeralSigningKey();
    options.DisableHttpsRequirement();
});
并创建令牌身份验证控制器

[HttpPost("~/connect/token"), Produces("application/json")]
public async Task<IActionResult> Exchange(OpenIdConnectRequest request)
{
    if (request.IsPasswordGrantType())
    {
        var identity = new ClaimsIdentity(OpenIdConnectServerDefaults.AuthenticationScheme);

        identity.AddClaim(OpenIdConnectConstants.Claims.Subject,
            user.Id.ToString,
            OpenIdConnectConstants.Destinations.AccessToken);

            var ticket = new AuthenticationTicket(
                new ClaimsPrincipal(identity),
                new AuthenticationProperties(),
                OpenIdConnectServerDefaults.AuthenticationScheme);

            ticket.SetResources(request.GetResources());
            ticket.SetScopes(request.GetScopes());

            return SignIn(ticket.Principal, ticket.Properties, ticket.AuthenticationScheme);    
    }
}
[HttpPost(“~/connect/token”),生成(“application/json”)]
公共异步任务交换(OpenIdConnectRequest)
{
if(request.IsPasswordGrantType())
{
var identity=newclaimsidentity(OpenIdConnectServerDefaults.AuthenticationScheme);
identity.AddClaim(OpenIdConnectConstants.Claims.Subject,
user.Id.ToString,
OpenIdConnectConstants.Destinations.AccessToken);
var票证=新的身份验证票证(
新索赔人(身份),
新建AuthenticationProperties(),
OpenIdConnectServerDefaults.AuthenticationScheme);
ticket.SetResources(request.GetResources());
ticket.SetScopes(request.GetScopes());
返回签名(ticket.Principal、ticket.Properties、ticket.AuthenticationScheme);
}
}
如果删除SetScopes调用,但不返回刷新令牌,则错误会消失


现在在兜圈子。非常感谢您的帮助。

您是否尝试过启用日志记录?是-已启用日志记录。但是什么也没有返回。500响应几乎总是未捕获异常的结果,应该由Kestrel自动记录。考虑更新你的问题,包括完整的日志(如果有必要的话,不要犹豫去改变赘言级别)。我在重建所有的东西和更新库之后都已经返回了,现在都在工作。我看不出什么东西第一次坏了。但是谢谢你花时间回复。
[HttpPost("~/connect/token"), Produces("application/json")]
public async Task<IActionResult> Exchange(OpenIdConnectRequest request)
{
    if (request.IsPasswordGrantType())
    {
        var identity = new ClaimsIdentity(OpenIdConnectServerDefaults.AuthenticationScheme);

        identity.AddClaim(OpenIdConnectConstants.Claims.Subject,
            user.Id.ToString,
            OpenIdConnectConstants.Destinations.AccessToken);

            var ticket = new AuthenticationTicket(
                new ClaimsPrincipal(identity),
                new AuthenticationProperties(),
                OpenIdConnectServerDefaults.AuthenticationScheme);

            ticket.SetResources(request.GetResources());
            ticket.SetScopes(request.GetScopes());

            return SignIn(ticket.Principal, ticket.Properties, ticket.AuthenticationScheme);    
    }
}