1. Giới thiệu
Ứng dụng cửa hàng trong Lark Open Platform cần sử dụng hai loại access token chính: app_access_token
và tenant_access_token
. Bài viết này sẽ hướng dẫn cách lấy cả hai loại token này và cung cấp các mẹo để lưu trữ chúng an toàn.
2. Lấy app_access_token
2.1 Thông tin API
- URL:
https://open.larksuite.com/open-apis/auth/v3/app_access_token
- Phương thức: POST
- Loại ứng dụng hỗ trợ: Chỉ ứng dụng cửa hàng
2.2 Request
Headers
{
"Content-Type": "application/json; charset=utf-8"
}
Body
{
"app_id": "cli_slkdjalasdkjasd",
"app_secret": "dskLLdkasdjlasdKK",
"app_ticket": "dskLLdkasd"
}
2.3 Response
{
"code": 0,
"msg": "success",
"app_access_token": "a-6U1SbDiM6XIH2DcTCPyeub",
"expire": 7140
}
3. Lấy tenant_access_token
3.1 Thông tin API
- URL:
https://open.larksuite.com/open-apis/auth/v3/tenant_access_token
- Phương thức: POST
- Loại ứng dụng hỗ trợ: Chỉ ứng dụng cửa hàng
3.2 Request
Headers
{
"Content-Type": "application/json; charset=utf-8"
}
Body
{
"app_access_token": "a-32bd8551db2f081cbfd26293f27516390b9feb04",
"tenant_key": "73658811060f175d"
}
3.3 Response
{
"code": 0,
"msg": "success",
"tenant_access_token": "t-caecc734c2e3328a62489fe0648c4b98779515d3",
"expire": 7140
}
4. Ví dụ sử dụng Python
Dưới đây là ví dụ về cách lấy cả app_access_token
và tenant_access_token
bằng Python:
import requests
import json
def get_app_access_token(app_id, app_secret, app_ticket):
url = "https://open.larksuite.com/open-apis/auth/v3/app_access_token"
headers = {"Content-Type": "application/json; charset=utf-8"}
payload = {
"app_id": app_id,
"app_secret": app_secret,
"app_ticket": app_ticket
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.json()
def get_tenant_access_token(app_access_token, tenant_key):
url = "https://open.larksuite.com/open-apis/auth/v3/tenant_access_token"
headers = {"Content-Type": "application/json; charset=utf-8"}
payload = {
"app_access_token": app_access_token,
"tenant_key": tenant_key
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.json()
# Sử dụng các hàm
app_id = "your_app_id"
app_secret = "your_app_secret"
app_ticket = "your_app_ticket"
tenant_key = "your_tenant_key"
app_token_response = get_app_access_token(app_id, app_secret, app_ticket)
app_access_token = app_token_response['app_access_token']
tenant_token_response = get_tenant_access_token(app_access_token, tenant_key)
tenant_access_token = tenant_token_response['tenant_access_token']
print(f"App Access Token: {app_access_token}")
print(f"Tenant Access Token: {tenant_access_token}")
5. Mẹo lưu trữ mã token an toàn
- Sử dụng biến môi trường: Lưu trữ các token nhạy cảm như
app_secret
trong biến môi trường thay vì hard-code trong mã nguồn. - Mã hóa token: Nếu cần lưu trữ token, hãy mã hóa chúng trước khi lưu vào cơ sở dữ liệu.
- Sử dụng key management service: Đối với ứng dụng quy mô lớn, hãy sử dụng dịch vụ quản lý khóa như AWS KMS hoặc Google Cloud KMS.
- Rotation định kỳ: Thực hiện rotation (thay đổi) các token định kỳ để giảm thiểu rủi ro bảo mật.
- Kiểm soát truy cập: Giới hạn quyền truy cập vào các token chỉ cho những người cần thiết.
- Logging và Monitoring: Theo dõi việc sử dụng token và cảnh báo khi có hoạt động bất thường.
- Không lưu trữ trong version control: Tuyệt đối không lưu trữ token trong hệ thống quản lý phiên bản như Git.
- Sử dụng secret management tools: Công cụ như HashiCorp Vault có thể giúp quản lý và bảo vệ các token một cách hiệu quả.
- Implement token refresh: Tự động làm mới token trước khi hết hạn để tránh gián đoạn dịch vụ.
- Xóa token khi không cần thiết: Khi một phiên làm việc kết thúc, hãy xóa token khỏi bộ nhớ.
6. Kết luận
Việc lấy và quản lý app_access_token
và tenant_access_token
đúng cách là rất quan trọng cho sự thành công của ứng dụng cửa hàng trên Lark Open Platform. Bằng cách tuân thủ các hướng dẫn này và áp dụng các mẹo bảo mật, bạn có thể đảm bảo rằng ứng dụng của mình tương tác với API của Lark một cách an toàn và hiệu quả.