尝试使用OpenIddict检索刷新令牌会导致内部服务器错误

时间:2017-03-28 14:35:14

标签: openiddict refresh-token

我尝试使用OpenIddict库获取访问权限并刷新令牌。

请求访问令牌时,一切似乎都很好。但是在添加scope = offline_access时,会返回500内部服务器错误。

使用postman和grant_type =密码,并设置用户名和密码,将返回有效的access_token。

但在追加scope = offline_access后,状态为500内部服务器错误。

我用

注册OpenIddict服务
services.AddOpenIddict(options => {
    options.AddEntityFrameworkCoreStores<dbContext>();
    options.AddMvcBinders();
    options.EnableTokenEndpoint("/connect/token");
    options.AllowPasswordFlow();
    options.AllowRefreshTokenFlow();
    options.AddEphemeralSigningKey();
    options.DisableHttpsRequirement();
});

我注册了OpenIddict和验证中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseOAuthValidation(options => {
        options.AutomaticAuthenticate = true;
        options.AutomaticChallenge = true;
    });

    app.UseOpenIddict();

    app.UseMvcWithDefaultRoute();
}

并创建令牌身份验证控制器

[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);    
    }
}

如果删除了SetScopes调用,则错误消失,但不会返回刷新令牌。

现在转圈圈。任何帮助非常感谢。

0 个答案:

没有答案