IdentityServer4错误,此客户端不允许offline_access

时间:2019-02-22 06:55:27

标签: c# oauth-2.0 asp.net-identity identityserver4

我在内存配置中创建了一个帮助器类,

public class InMemoryConfiguration
{
    public static IEnumerable<ApiResource> ApiResources()
    {
        return new[] {
                new ApiResource("socialnetwork", "Social Network")
            };
    }

    public static IEnumerable<Client> Clients()
    {
        return new[] {
                new Client
                {
                    ClientId = "socialnetwork",
                    ClientName = "SocialNetwork",
                    ClientSecrets = new [] { new Secret("secret".Sha256()) },
                     //Flow = Flows.ResourceOwner,
                    AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                    AllowedScopes = new [] { "socialnetwork", StandardScopes.OfflineAccess, StandardScopes.OpenId, StandardScopes.OfflineAccess },
                    Enabled = true

                }
            };
    }

    public static IEnumerable<TestUser> Users()
    {
        return new[] {
                new TestUser
                {
                    SubjectId = "1",
                    Username = "myUser@question.com",
                    Password = "password",
                }
            };
    }
}

从我的ASP.Net应用程序(单独的项目)中,我正在发送身份验证请求,

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {

            try
            {
                if (!ModelState.IsValid)
                {
                    return View(model);
                }

                var client = new OAuth2Client(new Uri("http://localhost:61502/connect/token"), "socialnetwork", "secret");                
                var requestResponse = client.RequestAccessTokenUserName(model.Email, model.Password, "openid profile offline_access");

                var claims = new[]
                {
                    new Claim("access_token", requestResponse.AccessToken),
                    new Claim("refresh_token", requestResponse.RefreshToken)
                };

                var claimsIdentity = new ClaimsIdentity(claims,
                    DefaultAuthenticationTypes.ApplicationCookie);

                HttpContext.GetOwinContext().Authentication.SignIn(claimsIdentity);

                return RedirectToLocal(returnUrl);
            }
            catch (Exception ex)
            {
                    //Do my Error Handling
            }


        }

现在我在服务器控制台上看到错误,

  该客户端不允许

offline_access:社交网络

我已在allowe上向客户端提供了所有访问权限

d scope,
AllowedScopes = new [] { "socialnetwork", StandardScopes.OfflineAccess, StandardScopes.OpenId, StandardScopes.OfflineAccess }

为什么会出现此错误?这与流量或其他有关吗?

1 个答案:

答案 0 :(得分:2)

在客户端配置中将{ "in": "query", "name": "filter[person]", "description": "<b>person Details</b> <br> `filter[person][0][name] = 'Joe' ` <br> `filter[person][1][lastName] = 'Jenny'` ", "required": false, "schema": { "type": "array", "items" : { "$ref": "#/definitions/person" } } "person": { "type": "object", "properties": { "name": { "title": "persons name", "type": "string", "format": "50", "example" : "Joe" }, "lastName": { "title": "persons Lastname(s)", "type": "string", "format": "50", "example" : "Bloggs" }} 属性设置为true,而不是将其添加到AllowOfflineAccess中:

AllowedScopes