## 用户登录
### 请求路径
http://cloud-gateway:9999/auth/oauth/token

~~~
修改hosts cloud-gateway 指向 服务器ip或请求地址直接用服务器ip
~~~
### header要求
~~~
    VERSION
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic d2ViOndlYg==
~~~



### 参数

| 参数           |          类型 | 是否必填 |释义|
|:-------------|------------:|:----:|:---|
| grant_type   |      string |  是   |登录方式|


### formdata 
| 参数      |     类型    | 是否必填 | 释义  |
|:---------|-------    :|:----:   |-----|
| username   |      string |  是   | 账号  |
| password   |      string |  是   | 密码  |

###  参数加密方式

#### Authorization: Basic xxxxxx
~~~
xxxxxx 为加密数据，平台会对每种客户端都分配一个密钥。
在没有登录之前，使用密钥进行加密，并替换xxxxxx部分；
在登录之后xxxxxx替换为登录接口返回的token，
Authorization: token_type token
---------------------------------------------
加密方式: 暂时使用直接加密后的参数 

Authorization: Basic d2ViOndlYg==
~~~

#### password
~~~
对password进行AES对称加密，采用CFB模式
ex:
        AES aes = new AES(Mode.CFB, Padding.NoPadding,
                new SecretKeySpec("sdjurli%*iw18s^1".getBytes(StandardCharsets.UTF_8), "AES"),
                new IvParameterSpec("sdjurli%*iw18s^1".getBytes(StandardCharsets.UTF_8)));
        System.out.println(aes.encryptBase64("test123".getBytes(StandardCharsets.UTF_8)));
        
        输出结果是 2iIrtaZRSw==
        
        'sdjurli%*iw18s^1'是密钥，对test123进行加密
~~~

### request example

~~~
method: POST 
uri:http://cloud-gateway:9999/auth/oauth/token?grant_type=password

Content-Type: application/x-www-form-urlencoded
Authorization: Basic d2ViOndlYg==

username=admin&password=2iIrtaZRSw==
~~~

![img.png](img.png)

### web参考  
~~~
http://192.168.31.78:8080/  
账号:admin   密码:test123
swagger文档地址  http://cloud-gateway:9999/swagger-ui/index.html
~~~