Fork me on GitHub

一步一步学习IdentityServer3 (12) 授权模式

Idr3中的授权模式也是基于OAuth2

来看看例子中的说明

   //
    // 摘要:
    //     OpenID Connect flows.
    public enum Flows
    {
        //
        // 摘要:
        //     authorization code flow
        AuthorizationCode = 0,
        //
        // 摘要:
        //     implicit flow
        Implicit = 1,
        //
        // 摘要:
        //     hybrid flow
        Hybrid = 2,
        //
        // 摘要:
        //     client credentials flow
        ClientCredentials = 3,
        //
        // 摘要:
        //     resource owner password credential flow
        ResourceOwner = 4,
        //
        // 摘要:
        //     custom grant
        Custom = 5,
        //
        // 摘要:
        //     authorization code with proof key flow
        AuthorizationCodeWithProofKey = 6,
        //
        // 摘要:
        //     hybrid flow with proof key
        HybridWithProofKey = 7
    }

代码中的Flows枚举中有这个几个,后几个也没用过不多说

授权许可是代表资源的凭证,所有者的授权(访问受保护的资源)所使用的客户端获取访问令牌,这个规范定义了四个授权模式类型   【授权码】【隐式】【密码模式】【客户端模式】 Idr3中其他的模式均为扩展性定义附加类型的机制

【授权码】:授权码是通过授权服务器获得的作为客户端很资源所有者之间的中间凭证,是直接请求授权服务器拿到授权码,从而跨过了 先从资源所有者指向的授权服务器或者客户端所指向的授权服务器,从而通过授权码反向提供给客户端,这样增加了客户端的验证授权码的验证处理相对提高安全性,所以在请求资源权限重定向到客户端之前通过授权码、授权服务器验证资源所有者获取授权

【隐式】:这个模式简化了授权码的流程,对于使用脚本语言Javascript在浏览器中实现客户端,在这个模式中由客户端直接颁发访问令牌而不是发布不客户端授权码,与授权码模式不一样,隐式模式中授权服务器不需要不需要验证客户端,由于这个步骤少了验证客户端步骤,所以在效率、速度上快,但要注意这方面的安全影响

【密码模式】:资源所有者凭借 用户名 密码 直接获取资源授权服务器的访问令牌权限,这个模式可以消除客户端存储需要的资源凭证来使用,通过交换具有长期访问的令牌或刷新令牌的凭证

【客户端模式】:针对请求受保护的资源(事先安排好的授权资源服务器)针对客户端可能为一个安排好的整体权限,不需要特定用户资源所有者

posted @ 2017-11-16 14:39  龙码精神  阅读(1020)  评论(0编辑  收藏  举报