# @ohos/jsonwebtoken

## 介绍

JSON Web Token（JWT）是一个开放的行业标准（RFC 7519），它定义了一种简洁的、自包含的协议格式，用于在通信双方传递json对象，传递的信息经过数字签名可以被验证和信任。[@ohos/jsonwebtoken](https://github.com/auth0/node-jsonwebtoken)是一款适用于 openharmony 环境的 Json Web Token实现。本库基于 [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken)原库 v9.0.1 版本进行适配。
<img src="screenshot/sign.jpeg" width="50%"/>
## 下载安装

```
ohpm install @ohos/jsonwebtoken
```

OpenHarmony ohpm 环境配置等更多内容，请参考[如何安装 OpenHarmony ohpm 包](https://gitcode.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md)

## 使用说明

### 基本使用示例

1. 同步签名 ( 默认算法：HMAC SHA256 )
    ```js
    import jwt from "@ohos/jsonwebtoken";
    let token = jwt.sign({ foo: 'bar' }, 'shhhhh');
    ```
2. 异步签名
    ```js
    jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) {
      console.log(token);
    });
    ```
2. RSA SHA256算法,使用私钥同步签名
    ```js
    // sign with RSA SHA256
    let privateKey = "";
    let token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });
    ```


4. RSA SHA256算法,使用公钥验证签名
    ```js
    let publicKey = ""
    const decoded =  jwt.verify(signatrue,publicKey);
    ```
## 接口

| 模块名                          | 功能  | 备注 |
|------------------------------|-----|---|
| sign(payload,secret,options) | 签名  |  |
| verify(signature,publicKey)  | 验签  |  |

更多模块的使用可参考[官方文档](https://github.com/auth0/node-jsonwebtoken/blob/master/README.md)，单元测试用例详情见[TEST.md](https://gitcode.com/openharmony-sig/ohos_jsonwebtoken/blob/master/TEST.md)

## 关于混淆
- 代码混淆，请查看[代码混淆简介](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/arkts-utils/source-obfuscation.md)
- 如果希望jsonwebtoken库在代码混淆过程中不会被混淆，需要在混淆规则配置文件obfuscation-rules.txt中添加相应的排除规则：
```
-keep
./oh_modules/@ohos/jsonwebtoken
```

## 约束与限制

在下述版本验证通过：

- DevEco Studio: 5.0.1 Beta1(5.1.0.258), SDK: API12 Release(5.0.0.71)

- DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release(5.0.0.66) 

- DevEco Studio: 4.0 Canary2(4.0.1.400), SDK: API10 (4.0.0.24) Beta1

## 贡献代码

使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/openharmony-sig/ohos_jsonwebtoken/issues)给组件，当然，也非常欢迎发 [PR](https://gitcode.com/openharmony-sig/ohos_jsonwebtoken/pulls)共建 。

## 开源协议

本项目基于 [The MIT License](https://gitcode.com/openharmony-sig/ohos_jsonwebtoken/blob/master/LICENSE) ，请自由地享受和参与开源。
