|
1 | | -# authing-java-sdk |
| 1 | +<div align=center> |
| 2 | + <img width="250" src="https://files.authing.co/authing-console/authing-logo-new-20210924.svg" /> |
| 3 | +</div> |
| 4 | +<div align="center"> |
| 5 | + <a href="javascript:;"><img src="https://img.shields.io/badge/test-passing-brightgreen" /></a> |
| 6 | + <a href="https://forum.authing.cn/" target="_blank"><img src="https://img.shields.io/badge/chat-forum-blue" /></a> |
| 7 | + <a href="https://console.authing.cn/openapi/" target="_blank"><img src="https://img.shields.io/badge/docs-passing-brightgreen" /></a> |
| 8 | + <a href="javascript:;"><img src="https://img.shields.io/badge/License-MIT-success" alt="License"></a> |
| 9 | +</div> |
2 | 10 |
|
3 | | -[Authing](https://authing.cn) 身份云 `Java` 语言客户端,包含 [Authing Open API](https://api.authing.cn/openapi/) 所有 Management API 的请求方法以及通过 OIDC 协议实现的认证侧的认证相关方法。 |
| 11 | +English | [简体中文](./README-zh_CN.md) |
4 | 12 |
|
5 | | -Management 模块以管理员(Administrator)的身份进行请求,用于管理 Authing 用户、角色、分组、组织机构等资源;一般来说,你在 Authing 控制台中能做的所有操作,都能用此模块完成。 |
| 13 | +You can use the Authing Java SDK to quickly integrate authentication capabilities for new or existing Back End applications. |
6 | 14 |
|
7 | | -AuthenticationClient 模块提供认证相关的调用方法,支持包括获取认证地址、获取登录态(用户信息,令牌)、检查令牌、登出等认证相关方法。 |
8 | 15 |
|
9 | | -如果你需要以终端用户(End User)的身份进行登录、注册、登出等操作,请使用 [Guard](https://www.authing.cn/learn/guard) . |
| 16 | +## 📚 Documentation |
10 | 17 |
|
11 | | -## 安装 |
| 18 | +To check out documentation, please refers to [docs](https://docs.authing.cn/v3/reference/sdk/java/install.html). |
12 | 19 |
|
13 | | -### Gradle |
| 20 | +This SDK is built upon [Authing Management API(v3)](https://api.authing.cn/openapi/v3/management/) and [Authing Authentication API(v3)](https://api.authing.cn/openapi/v3/authentication/), for older version, please refers to [older version docs](https://docs.authing.cn/v2/reference/sdk-for-java/). |
14 | 21 |
|
15 | | -```bash |
16 | | -implementation "cn.authing:authing-java-sdk:<{final_version}>" |
17 | | -``` |
18 | 22 |
|
19 | | -### Maven |
| 23 | +## ❓ Questions |
20 | 24 |
|
21 | | -```xml |
22 | | -<dependency> |
23 | | - <groupId>cn.authing</groupId> |
24 | | - <artifactId>authing-java-sdk</artifactId> |
25 | | - <version>{final_version}</version> |
26 | | -</dependency> |
27 | | -``` |
| 25 | +For questions and support please use the [official forum](https://forum.authing.cn/). The issue list of this repo is exclusively for bug reports and feature requests. |
28 | 26 |
|
29 | | -## 初始化 |
| 27 | +## 🤝 Contribution |
30 | 28 |
|
31 | | -初始化 `ManagementClient` 需要使用 `accessKeyId` 和 `accessKeySecret` 参数: |
| 29 | +- Fork it |
| 30 | +- Create your feature branch (git checkout -b my-new-feature) |
| 31 | +- Commit your changes (git commit -am 'Add some feature') |
| 32 | +- Push to the branch (git push -u origin my-new-feature) |
| 33 | +- Create new Pull Request |
32 | 34 |
|
33 | | -```java |
34 | | -import cn.authing.sdk.java.client.ManagementClient; |
35 | | -import cn.authing.sdk.java.model.ManagementClientOptions; |
| 35 | +Thank you to all the people who already contributed to Java SDK ! |
36 | 36 |
|
37 | | -ManagementClientOptions clientOptions = new ManagementClientOptions("AUTHING_USERPOOL_ID", "AUTHING_USERPOOL_SECRET"); |
38 | | -ManagementClient managementClient = new ManagementClient(clientOptions); |
39 | | -``` |
| 37 | +[Contributing to Authing Open Source Repos](https://github.com/Authing/.github/blob/main/CONTRIBUTING.md#English) |
40 | 38 |
|
41 | | -`ManagementClient` 会自动从 Authing 服务器获取 Management API Token,并通过返回的 Token 过期时间自动对 Token 进行缓存。 |
| 39 | +## 🎁 License |
42 | 40 |
|
43 | | -完整的参数和释义如下: |
| 41 | +[MIT](https://opensource.org/licenses/MIT) |
44 | 42 |
|
45 | | -- `accessKeyId`: Authing 用户池 ID; |
46 | | -- `accessKeySecret`: Authing 用户池密钥; |
47 | | -- `timeout`: 超时时间,单位为 ms,默认为 10000 ms; |
48 | | -- `host`: Authing 服务器地址,默认为 `https://api.authing.cn`。如果你使用的是 Authing 公有云版本,请忽略此参数。如果你使用的是私有化部署的版本,此参数必填,格式如下: https://authing-api.my-authing-service.com(最后不带斜杠 /)。 |
49 | | -- `lang`: 接口 Message 返回语言格式(可选),可选值为 zh-CN 和 en-US,默认为 zh-CN。 |
50 | | - |
51 | | -初始化 `AuthenticationClient` 需要使用 `appId` 、 `appSecret` 、 `host` 、 `redirectUri` 参数: |
52 | | - |
53 | | -```java |
54 | | -import cn.authing.sdk.java.client.AuthenticationClient; |
55 | | -import cn.authing.sdk.java.model.AuthenticationClientOptions; |
56 | | - |
57 | | -AuthenticationClientOptions clientOptions = new AuthenticationClientOptions("APP_ID", "APP_SECRET", "HOST", "REDIRECT_URI"); |
58 | | -AuthenticationClient authenticationClient = new AuthenticationClient(clientOptions); |
59 | | - |
60 | | -``` |
61 | | - |
62 | | -完整的参数和释义如下: |
63 | | - |
64 | | -- `appId`: Authing 应用 ID ; |
65 | | -- `appSecret`: Authing 应用 Secret; |
66 | | -- `host`: 应用对应的用户池域名,例如 pool.authing.cn; |
67 | | -- `redirectUri`: 认证完成后的重定向目标 URL, 会进行校验,需要和控制台的设置保持一致。 |
68 | | -- `logoutRedirectUri`: 登出完成后的重定向目标 URL。 |
69 | | -- `scope`: 应用侧向 Authing 请求的权限,以空格分隔,默认为 'openid profile',成功获取的权限会出现在 Access Token 的 scope 字段中。 |
70 | | -- `serverJWKS`: 服务端的 JWKS 公钥,用于验证 Token 签名,默认会通过网络请求从服务端的 JWKS 端点自动获取。 |
71 | | -- `cookieKey`: 存储认证上下文的 Cookie 名称。 |
72 | | - |
73 | | -认证侧相关的使用和方法说明,你可以在 [Authing Nodejs SDK](https://docs.authing.cn/v2/reference-new/sdk/v5/node/authentication.html) 中查看。 |
74 | | - |
75 | | -## 快速开始 |
76 | | - |
77 | | -初始化完成 `ManagementClient` 之后,你可以获取 `ManagementClient` 的实例,然后调用此实例上的方法。例如: |
78 | | - |
79 | | -- 获取用户列表 |
80 | | - |
81 | | -```java |
82 | | -import cn.authing.sdk.java.dto.*; |
83 | | -import cn.authing.sdk.java.client.ManagementClient; |
84 | | -import cn.authing.sdk.java.model.ManagementClientOptions; |
85 | | - |
86 | | -public static void main(String[] args) { |
87 | | - ManagementClientOptions clientOptions = new ManagementClientOptions("AUTHING_USERPOOL_ID", "AUTHING_USERPOOL_SECRET"); |
88 | | - ManagementClient managementClient = new ManagementClient(clientOptions); |
89 | | - ListUsersDto request = new ListUsersDto(); |
90 | | - request.setPage(1); |
91 | | - request.setLimit(10); |
92 | | - UserPaginatedRespDto response = managementClient.listUsers(request); |
93 | | - System.out.println(response); |
94 | | -} |
95 | | -``` |
96 | | - |
97 | | -- 创建角色 |
98 | | - |
99 | | -```java |
100 | | -import cn.authing.sdk.java.dto.*; |
101 | | -import cn.authing.sdk.java.client.ManagementClient; |
102 | | -import cn.authing.sdk.java.model.ManagementClientOptions; |
103 | | - |
104 | | -public static void main(String[] args) { |
105 | | - ManagementClientOptions clientOptions = new ManagementClientOptions("AUTHING_USERPOOL_ID", "AUTHING_USERPOOL_SECRET"); |
106 | | - ManagementClient managementClient = new ManagementClient(clientOptions); |
107 | | - CreateRoleDto request = new CreateRoleDto(); |
108 | | - request.setCode("code"); |
109 | | - request.setNamespace("namespace"); |
110 | | - request.setDescription("description"); |
111 | | - RoleSingleRespDto response = managementClient.createRole(request); |
112 | | - System.out.println(response); |
113 | | -} |
114 | | -``` |
115 | | - |
116 | | -完整的接口列表,你可以在 [Authing Open API](https://api.authing.cn/openapi/) 和 [SDK 文档](https://authing-open-api.readme.io/reference/java) 中获取。 |
117 | | - |
118 | | -## 错误处理 |
119 | | - |
120 | | -`ManagementClient` 中的每个方法,遵循统一的返回结构: |
121 | | - |
122 | | -- `statusCode`: 请求是否成功状态码,当 `statusCode` 为 200 时,表示操作成功,非 200 全部为失败。 |
123 | | -- `apiCode`: 细分错误码,当 `apiCode` 非 200 时,可通过此错误码得到具体的错误类型。 |
124 | | -- `message`: 具体的错误信息。 |
125 | | -- `data`: 具体返回的接口数据。 |
126 | | - |
127 | | -一般情况下,如果你只需要判断操作是否成功,只需要对比一下 `code` 是否为 200。如果非 200,可以在代码中通抛出异常或者任何你项目中使用的异常处理方式。 |
128 | | - |
129 | | -```java |
130 | | -import cn.authing.sdk.java.dto.*; |
131 | | -import cn.authing.sdk.java.client.ManagementClient; |
132 | | -import cn.authing.sdk.java.model.ManagementClientOptions; |
133 | | - |
134 | | -public static void main(String[] args) { |
135 | | - ManagementClientOptions clientOptions = new ManagementClientOptions("AUTHING_USERPOOL_ID", "AUTHING_USERPOOL_SECRET"); |
136 | | - ManagementClient managementClient = new ManagementClient(clientOptions); |
137 | | - CreateRoleDto request = new CreateRoleDto(); |
138 | | - request.setCode("code"); |
139 | | - request.setNamespace("namespace"); |
140 | | - request.setDescription("description"); |
141 | | - RoleSingleRespDto response = managementClient.createRole(request); |
142 | | - |
143 | | - if (response.getCode() != 200) { |
144 | | - throw new RuntimeException(response.getMessage()); // 抛出异常,由全局异常捕捉中间件进行异常捕捉 |
145 | | - } |
146 | | - |
147 | | - // 继续你的业务逻辑 ... |
148 | | -} |
149 | | -``` |
150 | | - |
151 | | -## 私有化部署 |
152 | | - |
153 | | -如果你使用的是私有化部署的 Authing IDaaS 服务,需要指定此 Authing 私有化实例的 `host`,如: |
154 | | - |
155 | | -```java |
156 | | -import cn.authing.sdk.java.dto.*; |
157 | | -import cn.authing.sdk.java.model.ManagementClientOptions; |
158 | | - |
159 | | -public class ManagementClientTest { |
160 | | - |
161 | | - private static final String ACCESS_KEY_ID = "YOUR_ACCESS_KEY_ID"; |
162 | | - private static final String ACCESS_KEY_SECRET = "YOUR_ACCESS_KEY_SECRET"; |
163 | | - // 您的 Authing 私有化实例 HOST 地址,格式例如 https://core.authing.cn |
164 | | - private static final String HOST = "YOUR_HOST"; |
165 | | - private ManagementClient managementClient = null; |
166 | | - |
167 | | - public ManagementClientTest() { |
168 | | - ManagementClientOptions clientOptions = new ManagementClientOptions(ACCESS_KEY_ID, ACCESS_KEY_SECRET); |
169 | | - clientOptions.setHost(HOST); |
170 | | - managementClient = new ManagementClient(clientOptions); |
171 | | - } |
172 | | - |
173 | | -} |
174 | | -``` |
175 | | - |
176 | | -如果你不清楚如何获取,可以联系 Authing IDaaS 服务管理员。 |
177 | | - |
178 | | -## 资源 |
179 | | - |
180 | | -- [官网](https://authing.cn) |
181 | | -- [开发者文档](https://docs.authing.cn/) |
182 | | -- [Authing Open API](https://api.authing.cn/openapi/) |
183 | | -- [SDK 文档](https://authing-open-api.readme.io/reference/nodejs) |
184 | | -- [论坛社区](https://forum.authing.cn/) |
185 | | - |
186 | | -## 获取帮助 |
187 | | - |
188 | | -有任何疑问,可以在 Authing 论坛提出: [#authing-forum](https://forum.authing.cn/) |
| 43 | +Copyright (c) 2019 Authing |
0 commit comments