identityserver4 注意踩坑

identityserver4 注意踩坑 invalid_scope

密码模式和客户端模式出现 invalid_scope 报错
在这里插入图片描述
服务端日志
IdentityServer4.Validation.TokenRequestValidator[0]
No scopes found in request, {
“ClientId”: “pwdClient”,
“GrantType”: “password”,
“Raw”: {
“client_id”: “pwdClient”,
“client_secret”: “REDACTED”,
“grant_type”: “password”,
“password”: “REDACTED”,
“username”: “jcb”
}
}

密码模式(ResourceOwnerPassword)
config.cs添加

public static IEnumerable<IdentityResource> GetIdentityResourceResources()
       {
           return new List<IdentityResource>
           {
               new IdentityResources.OpenId(), //未添加导致scope错误
               new IdentityResources.Profile()
           };
       }
public static IEnumerable<Client> GetClients()
        {
            return new List<Client> {
                new Client(){
                ClientId="pwdClient",
                AllowedGrantTypes=GrantTypes.ResourceOwnerPassword,
                    ClientSecrets =
                    {
                        new Secret("secret".Sha256())
                    },
                    AllowedScopes={ "api",IdentityServerConstants.StandardScopes.OpenId,
                 IdentityServerConstants.StandardScopes.Profile}//需要额外添加
                }
            };
        }

startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddIdentityServer()
                .AddDeveloperSigningCredential()
                .AddInMemoryApiResources(Config.GetResource())
                .AddInMemoryClients(Config.GetClients())
                .AddTestUsers(Config.GetTestUsers())
                .AddInMemoryIdentityResources(Config.GetIdentityResourceResources());//这里加入刚刚的方法             
        }

客户端模式(ClientCredentials)

如果使用客户端出现上述报错

Config.cs需要添加

public static IEnumerable<ApiScope> ApiScopes =>
        new ApiScope[]
        {
            new ApiScope("api")
        };
public static IEnumerable<ApiResource> GetResource()
        {
            return new List<ApiResource>
            {
                new ApiResource("api","my api")
                {
                    Scopes ={"api"},//重要,不配置返回 invalid_scope
                }
            };
        }

Startup.cs

 services.AddIdentityServer()
                .AddDeveloperSigningCredential()
                .AddInMemoryApiResources(Config.GetResource())
                .AddInMemoryClients(Config.GetClients())
                .AddTestUsers(Config.GetTestUsers())
                .AddInMemoryIdentityResources(Config.GetIdentityResourceResources())
                .AddInMemoryApiScopes(Config.ApiScopes);//添加
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值