Spring security知识整理

1.spring security认证流程

Spring Security中进行身份验证的是AuthenticationManager接口,ProviderManager是它的一个默认实现,但它并不用来处理身份认证,而是委托给配置好的AuthenticationProvider,每个AuthenticationProvider会轮流检查身份认证。检查后或者返回Authentication对象或者抛出异常。

验证身份就是加载响应的UserDetails,看看是否和用户输入的账号、密码、权限等信息匹配。此步骤由实现AuthenticationProvider的DaoAuthenticationProvider(它利用UserDetailsService验证用户名、密码和授权)处理。包含 GrantedAuthority 的 UserDetails对象在构建 Authentication对象时填入数据。
在这里插入图片描述
身份认证的调用流程图如下
在这里插入图片描述

2. AuthorizationServerConfigurerAdapter讲解

Spring传入AuthorizationServerConfigurer中:

  1. ClientDetailsServiceConfigurer:用来配置客户端详情服务(ClientDetailsService),客户端详情信息在这里进行初始化,你能够把客户端详情信息写死在这里或者是通过数据库来存储调取详情信息。
  2. AuthorizationServerSecurityConfigurer:用来配置令牌端点(Token Endpoint)的安全约束.
  3. AuthorizationServerEndpointsConfigurer:用来配置授权(authorization)以及令牌(token)的访问端点和令牌服务(token
    services)。
    参考链接

3.授权服务器端点开启

spring security oauth2 中的 endpoint(聊聊spring security oauth2的几个endpoint的认证)

  1. /oauth/authorize(授权端,授权码模式使用)
  2. /oauth/token(令牌端,获取 token)
  3. /oauth/check_token(资源服务器用来校验token) /oauth/confirm_access(用户发送确认授权)
  4. /oauth/error(认证失败) /oauth/token_key(如果使用JWT,可以获的公钥用于 token 的验签)
  5. /oauth/token_key 提供公有密匙的端点,如果你使用JWT令牌的话

allowFormAuthenticationForClients作用:主要是让/oauth/token支持client_id以及client_secret作登录认证

对应代码:

    public void configure(AuthorizationServerSecurityConfigurer oauthServer) {
        oauthServer
                .passwordEncoder(new BCryptPasswordEncoder())
                // 开启/oauth/token_key验证端口无权限访问
                .tokenKeyAccess("permitAll()")
                // 开启/oauth/check_token验证端口认证权限访问,配置资源服务器可以权限校验
                .checkTokenAccess("isAuthenticated()")
                .allowFormAuthenticationForClients();
    }

默认是关闭

4.springsecurity相关方法

在这里插入图片描述
http.authorizeRequests()其中这里的意思是指通过authorizeRequests()方法来开始请求权限配置
第一部分是formLogin配置段,用于配置登录验证逻辑相关的信息。如:登录页面、登录成功页面、登录请求处理路径等。
第二部分是authorizeRequests配置端,用于配置资源的访问权限。如:开发登录页面的permitAll开放访问,“/biz1”(业务一页面资源)需要有资源ID为"biz1"的用户才可以访问

**jwkSetUri:**用于从授权服务器(包含用于验证ID令牌的JSON Web签名(JWS)和可选的UserInfo响应)的加密密钥中检索JSON Web密钥(JWK)的URI

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值