当前位置:  开发笔记 > 前端 > 正文

IdentityServer4的有效grant_type值与使用混合授权类型的客户端有什么关系?

如何解决《IdentityServer4的有效grant_type值与使用混合授权类型的客户端有什么关系?》经验,为你挑选了1个好方法。

我正在使用IdentityServer4软件包的1.0.0版本.

"IdentityServer4": "1.0.0"

我创建了一个客户端

new Client
{
    ClientId = "MobleAPP",
    ClientName = "Moble App",
    ClientUri= "http://localhost:52997/api/",                    
    AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,

    ClientSecrets =
    {
        new Secret("SecretForMobleAPP".Sha256())
    },

    AllowedScopes =
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        "api"
    },
    AllowOfflineAccess = true
}

和范围/ ApiResources

public static IEnumerable GetApiResources()
{
   return new List
   {

      new ApiResource("api", "My API")

    };
}

使用以下用户/ TestUser

public static List GetUsers()
{
        return new List
        {

            new TestUser
            {
                SubjectId = "2",
                Username = "bob",
                Password = "password",

                Claims = new []
                {
                    new Claim(JwtClaimTypes.Name, "Bob Smith")
                }
            }
        };
}

我正在尝试测试我从Postman设置的IdentityServer,并确定grant_type键值对的可能值.

当我将grant_type设置为client_credentials并且不确定grant_type值是否还有其他选项时,我可以成功连接.

将grant_type设置为client_credentials的工作邮递员配置



1> Mickaël Derr..:

简短的回答

client_credentials是使用混合和客户端凭据授权类型时,grant_type您可以直接对令牌端点使用的唯一值.


更长的答案

客户端凭据授权类型是唯一允许您直接命中令牌端点的类型,这是您在Postman示例中所做的.在这种情况下,身份验证是针对客户端本身 - 即您注册的应用程序完成的.

使用混合授权类型时,将对最终用户(使用您的应用程序的用户)进行身份验证.在这种情况下,您无法直接命中端点令牌,但您必须向IdentityServer 发出授权请求.

执行此操作时,您将不使用grant_type参数而是response_type参数来指示IdentityServer您期望的内容.response_type您可以在IdentityServer常量中找到使用混合授权类型时可能的值- 它们是字典中的最后3项:

code id_token,它将返回授权码和身份令牌

code token,返回授权码和访问令牌

code id_token token,为您提供授权码,身份令牌和访问令牌

获得授权代码后,您将能够通过命中令牌端点将其替换为访问令牌,并可能更新刷新令牌.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有