This repository has been archived by the owner on Apr 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
luojielin
committed
May 27, 2022
1 parent
e77b739
commit 0c892e9
Showing
268 changed files
with
18,842 additions
and
4,881 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,196 +1,75 @@ | ||
# authing-go-sdk | ||
# SDK for Go | ||
|
||
[Authing](https://authing.cn) 身份云 `Go` 语言客户端,包含 [Authing Open API](https://api.authing.cn/openapi/) 所有 Management API 的请求方法。 | ||
<div align=center><img width="300" src="https://files.authing.co/authing-console/authing-logo-new-20210924.svg"></div> | ||
<br/> | ||
|
||
此模块一般用于后端服务器环境,以管理员(Administrator)的身份进行请求,用于管理 Authing 用户、角色、分组、组织机构等资源;一般来说,你在 Authing 控制台中能做的所有操作,都能用此模块完成。 | ||
Authing Go SDK 目前支持 Golang 1.8+ 版本。 | ||
|
||
如果你需要以终端用户(End User)的身份进行登录、注册、登出等操作,请使用 [Guard](https://www.authing.cn/learn/guard) . | ||
|
||
## 安装 | ||
Authing Golang SDK 由两部分组成:`ManagementClient` 和 `AuthenticationClient`。 | ||
|
||
`AuthenticationClient` 以终端用户(End User)的身份进行请求,提供了登录、注册、登出、管理用户资料、获取授权资源等所有管理用户身份的方法;此模块还提供了各种身份协议的 SDK,如 [OpenID Connect](/guides/federation/oidc.md), [OAuth 2.0](/guides/federation/oauth.md), [SAML](/guides/federation/saml.md) 和 [CAS](/guides/federation/cas.md)。此模块适合用于后端交互的服务器环境。 | ||
|
||
`ManagementClient` 以管理员(Administrator)的身份进行请求,用于管理用户池资源和执行管理任务,提供了管理用户、角色、应用、资源等方法;一般来说,你在 [Authing 控制台](https://console.authing.cn/console/userpool) 中能做的所有操作,都能用此模块完成。此模块适合在后端环境下使用。 | ||
|
||
```shell | ||
go get -u github.com/Authing/authing-go-sdk | ||
``` | ||
|
||
## 初始化 | ||
## GitHub 下载地址 | ||
|
||
初始化 `ManagementClient` 需要使用 `accessKeyId` 和 `accessKeySecret` 参数: | ||
| 条目 | 说明 | | ||
| -------- | ------------------------------------------- | | ||
| 支持版本 | Golang 1.8 + | | ||
| 仓库地址 | [https://github.com/Authing/authing-go-sdk](https://github.com/Authing/authing-go-sdk) | | ||
|
||
```go | ||
import ( | ||
"authing-go-sdk/client" | ||
) | ||
## 安装 | ||
|
||
options := client.ManagementClientOptions{ | ||
AccessKeyId: "AUTHING_USERPOOL_ID", | ||
AccessKeySecret: "AUTHING_USERPOOL_SECRET", | ||
} | ||
client, err := client.NewClient(&options) | ||
if err != nil { | ||
// The exception needs to be handled by the developer. | ||
} | ||
安装 golang sdk 库,请运行: | ||
|
||
``` | ||
go get github.com/Authing/authing-go-sdk | ||
``` | ||
|
||
`ManagementClient` 会自动从 Authing 服务器获取 Management API Token,并通过返回的 Token 过期时间自动对 Token 进行缓存。 | ||
|
||
完整的参数和释义如下: | ||
|
||
- `AccessKeyId`: Authing 用户池 ID; | ||
- `AccessKeySecret`: Authing 用户池密钥; | ||
- `Timeout`: 超时时间,单位为 ms,默认为 10000 ms; | ||
- `Host`: Authing 服务器地址,默认为 `https://api.authing.cn`。如果你使用的是 Authing 公有云版本,请忽略此参数。如果你使用的是私有化部署的版本,此参数必填,格式如下: https://authing-api.my-authing-service.com(最后不带斜杠 /)。 | ||
- `Lang`: 接口 Message 返回语言格式(可选),可选值为 zh-CN 和 en-US,默认为 zh-CN。 | ||
|
||
## 快速开始 | ||
## 使用管理模块 | ||
|
||
初始化完成 `ManagementClient` 之后,你可以获取 `ManagementClient` 的实例,然后调用此实例上的方法。例如: | ||
初始化 `ManagementClient` 需要 `userPoolId`(用户池 ID) 和 `secret`(用户池密钥): | ||
|
||
- 获取用户列表 | ||
> 你可以在此[了解如何获取 UserPoolId 和 Secret](/guides/faqs/get-userpool-id-and-secret.md) . | ||
```go | ||
package main | ||
|
||
import ( | ||
"authing-go-sdk/client" | ||
"authing-go-sdk/dto" | ||
"fmt" | ||
) | ||
|
||
func main() { | ||
options := client.ManagementClientOptions{ | ||
AccessKeyId: "AUTHING_USERPOOL_ID", | ||
AccessKeySecret: "AUTHING_USERPOOL_SECRET", | ||
} | ||
client, err := client.NewClient(&options) | ||
request := dto.ListUsersDto{ | ||
Page: 1, | ||
Limit: 10, | ||
} | ||
response := client.listUsers(request) | ||
fmt.Println(response) | ||
client := management.NewClient(userPoolId, secret) | ||
} | ||
``` | ||
|
||
- 创建角色 | ||
现在 `managementClient` 实例就可以使用了。例如可以导出所有组织机构数据: | ||
|
||
```go | ||
package main | ||
|
||
import ( | ||
"authing-go-sdk/client" | ||
"authing-go-sdk/dto" | ||
"fmt" | ||
) | ||
|
||
func main() { | ||
options := client.ManagementClientOptions{ | ||
AccessKeyId: "AUTHING_USERPOOL_ID", | ||
AccessKeySecret: "AUTHING_USERPOOL_SECRET", | ||
} | ||
client, err := client.NewClient(&options) | ||
request := dto.CreateRoleDto{ | ||
Code: "code", | ||
Namespace: "namespace", | ||
Description: "description", | ||
} | ||
response := client.createRole(request) | ||
fmt.Println(response) | ||
client := management.NewClient(userPoolId, secret) | ||
resp, err := client.ExportAll() | ||
} | ||
``` | ||
|
||
完整的接口列表,你可以在 [Authing Open API](https://api.authing.cn/openapi/) 和 [SDK 文档](https://authing-open-api.readme.io/reference/go) 中获取。 | ||
|
||
## 错误处理 | ||
|
||
`ManagementClient` 中的每个方法,遵循统一的返回结构: | ||
|
||
- `StatusCode`: 请求是否成功状态码,当 `StatusCode` 为 200 时,表示操作成功,非 200 全部为失败。 | ||
- `ApiCode`: 细分错误码,当 `ApiCode` 非 200 时,可通过此错误码得到具体的错误类型。 | ||
- `Message`: 具体的错误信息。 | ||
- `Data`: 具体返回的接口数据。 | ||
|
||
一般情况下,如果你只需要判断操作是否成功,只需要对比一下 `Code` 是否为 200。如果非 200,可以在代码中通抛出异常或者任何你项目中使用的异常处理方式。 | ||
|
||
```go | ||
package main | ||
|
||
import ( | ||
"authing-go-sdk/client" | ||
"authing-go-sdk/dto" | ||
"fmt" | ||
) | ||
|
||
func main() { | ||
options := client.ManagementClientOptions{ | ||
AccessKeyId: "AUTHING_USERPOOL_ID", | ||
AccessKeySecret: "AUTHING_USERPOOL_SECRET", | ||
} | ||
client, err := client.NewClient(&options) | ||
request := dto.CreateRoleDto{ | ||
Code: "code", | ||
Namespace: "namespace", | ||
Description: "description", | ||
} | ||
response := client.createRole(request) | ||
fmt.Println(response) | ||
|
||
if response.Code != 200 { | ||
// 自定义错误处理逻辑 | ||
} | ||
} | ||
``` | ||
|
||
## 私有化部署 | ||
|
||
如果你使用的是私有化部署的 Authing IDaaS 服务,需要指定此 Authing 私有化实例的 `host`,如: | ||
|
||
```go | ||
package main | ||
**私有化部署**场景需要指定你私有化的 Authing 服务的 GraphQL 端点(**不带协议头和 Path**)以及密码加密公钥,如果你不清楚可以联系 Authing IDaaS 服务管理员。 | ||
|
||
import ( | ||
"authing-go-sdk/client" | ||
"authing-go-sdk/dto" | ||
"fmt" | ||
) | ||
如: | ||
|
||
```go | ||
func main() { | ||
options := client.ManagementClientOptions{ | ||
AccessKeyId: "AUTHING_USERPOOL_ID", | ||
AccessKeySecret: "AUTHING_USERPOOL_SECRET", | ||
Host: "YOUR_HOST", // 您的 Authing 私有化实例 HOST 地址,格式例如 https://core.authing.cn | ||
} | ||
client, err := client.NewClient(&options) | ||
if err != nil { | ||
// The exception needs to be handled by the developer. | ||
} | ||
|
||
request := dto.CreateRoleDto{ | ||
Code: "code", | ||
Namespace: "namespace", | ||
Description: "description", | ||
} | ||
response := client.createRole(request) | ||
fmt.Println(response) | ||
|
||
if response.Code != 200 { | ||
// 自定义错误处理逻辑 | ||
} | ||
// 增加参数配置自定义域名 | ||
client := management.NewClient(userPoolId, secret, host) | ||
} | ||
``` | ||
|
||
如果你不清楚如何获取,可以联系 Authing IDaaS 服务管理员。 | ||
|
||
## 资源 | ||
|
||
- [官网](https://authing.cn) | ||
- [开发者文档](https://docs.authing.cn/) | ||
- [Authing Open API](https://api.authing.cn/openapi/) | ||
- [SDK 文档](https://authing-open-api.readme.io/reference/nodejs) | ||
- [论坛社区](https://forum.authing.cn/) | ||
## 参与贡献 | ||
- Fork it | ||
- Create your feature branch (git checkout -b my-new-feature) | ||
- Commit your changes (git commit -am 'Add some feature') | ||
- Push to the branch (git push origin my-new-feature) | ||
- Create new Pull Request | ||
|
||
## 获取帮助 | ||
|
||
有任何疑问,可以在 Authing 论坛提出: [#authing-forum](https://forum.authing.cn/) | ||
Join us on forum: [#authing-chat](https://forum.authing.cn/) |
Binary file not shown.
Oops, something went wrong.