security oauth

JWT的RSA非对称密钥生成

使用jdk自带的keytool工具,执行后会在当前目录生成jwt.jks 密钥文件 cmd窗口  文件生成在当前目录

命令 keytool -genkey -alias auth -keyalg RSA -storetype PKCS12 -keysize 1024 -keystore jwt.jks

参数解析:
-genkey:创建证书
-alias:证书的别名。在一个证书库文件中,别名是唯一用来区分多个证书的标识符
-keyalg:密钥的算法,非对称加密的话就是RSA
-keystore:证书库文件保存的位置和文件名。如果路径写错的话,会出现报错信息。如果在路径下,证书库文件不存在,那么就会创建一个
-keysize:密钥长度,一般都是1024
-validity:证书的有效期,单位是天。比如36500的话,就是100年
 
命令 :keytool -export -alias auth -keystore E:/pro/justforfun-nacos/jwt.jks -file e:\pubkey.cer
alias 别名 和生成证书的别名一直
-keystore 证书的位置
-file 导出证书的位置
 输出秘钥信息  
命令:keytool -printcert  -file e:\pubkey.cer

security 可以单独使用

可以和Oauth2配合使用

  配合使用 有4中授权方式

1、授权码  最安全的一种授权方式 

2、客户端     是比较信任的第三方应用  不需要 用户名密码   只需要客户端的账号 密码 授权方式

3、简单模式  对于没有后端页面的第三方应用

4、密码模式  密码会泄露给认证服务

 授权码模式

  1.首先密码账户登陆   http://localhost:6001/auth/oauth/authorize?client_id=c2&response_type=code&scop=all&redirect_uri=http://www.baidu.com

    参数解析 

      client_id: 客户端ID

      response_type:标识   code代表授权码    简单模式  token 直接返回token  

      scop:授权范围

      redirect_uri:重定向的地址  response_type=code 返回的是授权码  response_type=token 返回的是一个token

  2.同意授权 重定向获取授权码 

  3.拿着授权码 换取token(post请求)

    获取token   需要post请求  http://localhost:6001/auth/oauth/token

    在body中传递参数

      client_id:客户端id

      client_secret:客户端密码

      grant_type:授权方式 authorization_code

         scop:授权范围

      redirect_uri :重定向的地址

      code:授权码

密码模式获取token 比较简单   需要post请求  http://localhost:6001/auth/oauth/token

    在body中传递参数

      client_id:客户端id

      client_secret:客户端密码

      grant_type:授权方式  password

         scop:授权范围 

      username:用户名称

      password:用户密码

客户端模式获取token 比较简单   需要post请求  http://localhost:6001/auth/oauth/token

    在body中传递参数

      client_id:客户端id

      client_secret:客户端密码

      grant_type:授权方式   client_credentials

         scop:授权范围  

  

 

posted @ 2021-11-27 14:58  单纯不撩妹  阅读(128)  评论(0)    收藏  举报