Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Trong chủ đề này, chúng tôi sẽ hướng dẫn bạn cách yêu cầu mã truy cập và mã uỷ quyền, định cấu hình Điểm cuối OAuth 2.0 và định cấu hình chính sách cho mỗi lần cấp được hỗ trợ .
Mã mẫu
Để thuận tiện cho bạn, bạn có thể xem các chính sách và điểm cuối được thảo luận trong chủ đề này trên GitHub trong dự án oauth-doc-examples trong kho lưu trữ mẫu api-platform-samples của Apigee. Bạn có thể triển khai mã mẫu và thử các yêu cầu mẫu được trình bày trong chủ đề này. Hãy xem dự án README để biết chi tiết.
Yêu cầu mã truy cập: loại cấp mã uỷ quyền
Phần này giải thích cách yêu cầu mã truy cập bằng loại cấp mã uỷ quyền luồng. Để xem giới thiệu về các loại quyền sử dụng OAuth 2.0, hãy xem phần Giới thiệu về OAuth 2.0.
Mẫu yêu cầu
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'
Bắt buộc tham số
Theo mặc định, các tham số này phải là x-www-form-urlencoded
và được chỉ định trong
nội dung yêu cầu (như trong mẫu ở trên); Tuy nhiên, bạn có thể thay đổi
mặc định này bằng cách
định cấu hình <GrantType>
, <Code>
và
<RedirectUri>
phần tử trong chính sách OAuthV2 được đính kèm với chính sách này
/accesstoken
. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
- grant_type – Phải được đặt thành giá trị
authorization_code
. - mã – Mã uỷ quyền nhận được từ
/authorize
điểm cuối (hoặc bất kỳ điểm cuối nào bạn chọn đặt tên). Cách yêu cầu mã truy cập trong quy trình uỷ quyền loại cấp mã, trước tiên, bạn phải có được mã uỷ quyền. Xem phần Yêu cầu mã uỷ quyền bên dưới. Xem thêm bài viết Triển khai loại cấp mã uỷ quyền. - redirect_uri – Bạn phải cung cấp tham số này nếu
Tham số
redirect_uri
đã được đưa vào yêu cầu mã uỷ quyền trước đó. Nếu thông sốredirect_uri
không được đưa vào yêu cầu mã uỷ quyền và nếu bạn không cung cấp tham số này, thì chính sách này sẽ sử dụng giá trị của URL gọi lại được cung cấp khi ứng dụng của nhà phát triển được đăng ký.
Không bắt buộc tham số
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
Bạn phải chuyển ID ứng dụng khách và Mật khẩu ứng dụng khách dưới dạng tiêu đề Xác thực cơ bản
(Được mã hoá base64) hoặc dưới dạng tham số mẫu client_id
và client_secret
. Bạn
lấy các giá trị này từ một ứng dụng của nhà phát triển đã đăng ký. Xem thêm "Mã hóa cơ bản
thông tin xác thực".
Điểm cuối mẫu
Dưới đây là cấu hình điểm cuối mẫu để tạo mã truy cập. Thao tác này sẽ thực thi Chính sách generateAccessToken. Bạn phải định cấu hình chính sách này để hỗ trợ việc cấp bộ mã_uỷ quyền loại.
... <Flow name="generate-access-token"> <Description>Generate a token</Description> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Chính sách mẫu
Đây là một chính sách GenerateAccessToken cơ bản được định cấu hình để chấp nhận
Loại cấp quyền authorization_code
. Để biết thông tin về các phần tử cấu hình tuỳ chọn
mà bạn có thể định cấu hình bằng chính sách này, hãy xem chính sách OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về phản hồi JSON mà
bao gồm mã truy cập, như minh hoạ dưới đây. Loại cấp quyền authorization_code
sẽ tạo
mã truy cập và mã làm mới, vì vậy, phản hồi có thể có dạng như sau:
{ "issued_at": "1420262924658", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420262924658", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "fYACGW7OCPtCNDEnRSnqFlEgogboFPMm", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "2l4IQtZXbn5WBJdL6EF7uenOWRsi", "organization_name": "docs", "refresh_token_expires_in": "86399", //--in seconds "refresh_count": "0" }
Nếu bạn đặt <GenerateResponse>
thành false, chính sách sẽ không trả về
của bạn. Thay vào đó, phương thức này điền dữ liệu liên quan đến tập hợp các biến luồng sau đây
cấp mã truy cập.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ví dụ:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
Yêu cầu mã truy cập: ứng dụng loại cấp thông tin xác thực
Phần này giải thích cách yêu cầu mã truy cập bằng loại cấp thông tin xác thực ứng dụng luồng. Để xem giới thiệu về các loại quyền sử dụng OAuth 2.0, hãy xem phần Giới thiệu về OAuth 2.0.
Mẫu yêu cầu
Để biết thông tin về cách mã hoá tiêu đề xác thực cơ bản trong lệnh gọi tiếp theo, hãy xem "Mã hoá thông tin xác thực cơ bản".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHoAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
Bắt buộc tham số
Theo mặc định, thông số allowed_type bắt buộc phải là x-www-form-urlencoded
và
được chỉ định trong nội dung yêu cầu (như trong mẫu ở trên); tuy nhiên, bạn có thể thay đổi
chế độ mặc định này bằng cách định cấu hình phần tử <GrantType>
trong chính sách OAuthV2
được gắn với điểm cuối /accesstoken
này. Ví dụ: bạn có thể chọn truyền
trong một tham số truy vấn. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
- grant_type – Phải được đặt thành giá trị
client_credentials
.
Không bắt buộc tham số
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
Bạn phải chuyển ID ứng dụng khách và Mật khẩu ứng dụng khách dưới dạng tiêu đề Xác thực cơ bản
(Được mã hoá base64) hoặc dưới dạng tham số mẫu client_id
và
client_secret
. Bạn lấy các giá trị này từ ứng dụng của nhà phát triển đã đăng ký
liên quan đến yêu cầu. Xem thêm "Xác thực cơ bản mã hoá
bằng chứng xác thực".
Điểm cuối mẫu
Dưới đây là cấu hình điểm cuối mẫu để tạo mã truy cập. Thao tác này sẽ thực thi Chính sách GenerateAccessToken phải được định cấu hình để hỗ trợ việc cấp thông tin client_credentials loại.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Chính sách mẫu
Đây là một chính sách GenerateAccessToken cơ bản được định cấu hình để chấp nhận
Loại cấp quyền client_credentials
. Để biết thông tin về các phần tử cấu hình tuỳ chọn
mà bạn có thể định cấu hình bằng chính sách này, hãy xem chính sách OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về phản hồi JSON. Ghi chú
với loại cấp client_credentials
, mã làm mới không được hỗ trợ. Chỉ
mã truy cập đã được tạo. Ví dụ:
{ "issued_at": "1420260525643", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "XkhU2DFnMGIVL2hvsRHLM00hRWav", "organization_name": "docs" }
Nếu bạn đặt <GenerateResponse>
thành false, chính sách sẽ không trả về
của bạn. Thay vào đó, phương thức này điền dữ liệu liên quan đến tập hợp các biến luồng sau đây
cấp mã truy cập.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Ví dụ:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Yêu cầu mã truy cập: loại cấp mật khẩu
Phần này giải thích cách yêu cầu mã truy cập bằng mật khẩu của chủ sở hữu tài nguyên quy trình cấp thông tin xác thực (mật khẩu). Để xem giới thiệu về các loại cấp quyền OAuth 2.0, hãy xem Giới thiệu về OAuth 2.0.
Để biết thêm thông tin về hình thức cấp mật khẩu, bao gồm một video dài 4 phút hướng dẫn cách triển khai mật khẩu đó, hãy xem phần Triển khai mật khẩu loại tài trợ.
Mẫu yêu cầu
Để biết thông tin về cách mã hoá tiêu đề xác thực cơ bản trong lệnh gọi tiếp theo, hãy xem "Mã hoá thông tin xác thực cơ bản".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST https://docs-test.apigee.net/oauth/token \ -d 'grant_type=password&username=the-user-name&password=the-users-password'
Bắt buộc tham số
Theo mặc định, các tham số này phải là x-www-form-urlencoded
và được chỉ định trong
nội dung yêu cầu (như trong mẫu ở trên); Tuy nhiên, bạn có thể thay đổi
mặc định này bằng cách
định cấu hình <GrantType>
, <Username>
và
<Password>
phần tử trong chính sách OAuthV2 được đính kèm với chính sách này
/token
. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
Thông tin xác thực người dùng thường được xác thực dựa trên kho lưu trữ thông tin xác thực bằng giao thức truy cập thư mục hạng nhẹ (LDAP) hoặc Chính sách JavaScript.
- grant_type – Phải được đặt thành giá trị
password
. - tên người dùng – Tên người dùng của chủ sở hữu tài nguyên.
- password (mật khẩu) – Mật khẩu của chủ sở hữu tài nguyên.
Không bắt buộc tham số
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
Bạn phải chuyển ID ứng dụng khách và Mật khẩu ứng dụng khách dưới dạng tiêu đề Xác thực cơ bản
(Được mã hoá base64) hoặc dưới dạng tham số mẫu client_id
và
client_secret
. Bạn lấy các giá trị này từ ứng dụng của nhà phát triển đã đăng ký
liên quan đến yêu cầu. Xem thêm "Xác thực cơ bản mã hoá
bằng chứng xác thực".
Điểm cuối mẫu
Dưới đây là cấu hình điểm cuối mẫu để tạo mã truy cập. Thao tác này sẽ thực thi Chính sách GenerateAccessToken phải được định cấu hình để hỗ trợ loại cấp mật khẩu.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Chính sách mẫu
Đây là một chính sách GenerateAccessToken cơ bản được định cấu hình để chấp nhận việc cấp mật khẩu loại. Để biết thông tin về các phần tử cấu hình tuỳ chọn mà bạn có thể định cấu hình bằng chính sách này, xem chính sách về OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours --> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về phản hồi JSON. Ghi chú
với loại cấp mật khẩu, cả mã truy cập và mã làm mới đều được tạo. Ví dụ:
{ "issued_at": "1420258685042", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420258685042", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6", "organization_name": "docs", "refresh_token_expires_in": "28799", //--in seconds "refresh_count": "0" }
Nếu bạn đặt <GenerateResponse>
thành false, chính sách sẽ không trả về
của bạn. Thay vào đó, phương thức này điền dữ liệu liên quan đến tập hợp các biến luồng sau đây
cấp mã truy cập.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ví dụ:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
Yêu cầu mã truy cập: cấp quyền ngầm lượt chuyển đổi
Phần này giải thích cách yêu cầu mã truy cập bằng quy trình loại cấp quyền ngầm ẩn. Cho giới thiệu về các loại cấp quyền OAuth 2.0, hãy xem Giới thiệu về OAuth 2.0.
Mẫu yêu cầu
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'https://docs-test.apigee.net/oauth/implicit?response_type=token&client_id=ABC123&redirect_uri=http://callback-example.com'
Bắt buộc tham số
Theo mặc định, các thông số này phải là tham số truy vấn (như trong mẫu ở trên); tuy nhiên,
bạn có thể thay đổi giá trị mặc định này bằng cách định cấu hình <ResponseType>
,
Các phần tử <ClientId>
và <RedirectUri>
trong OAuthV2
được đính kèm với điểm cuối /token
này. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
Thông tin xác thực người dùng thường được xác thực dựa trên kho lưu trữ thông tin xác thực bằng dịch vụ LDAP chính sách chú thích hoặc JavaScript của Google.
- response_type – Phải được đặt thành giá trị
token
. - client_id – Mã ứng dụng khách của ứng dụng nhà phát triển đã đăng ký.
- redirect_uri – Tham số này là bắt buộc nếu URI gọi lại không có được cung cấp khi ứng dụng của nhà phát triển ứng dụng được đăng ký. Nếu URL gọi lại được cung cấp tại ứng dụng đăng ký, nó sẽ được so sánh với giá trị này và phải khớp chính xác.
Không bắt buộc tham số
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
Cấp quyền ngầm không yêu cầu xác thực cơ bản. Bạn cần chuyển ID ứng dụng khách dưới dạng như được giải thích ở đây.
Điểm cuối mẫu
Dưới đây là cấu hình điểm cuối mẫu để tạo mã truy cập. Thao tác này sẽ thực thi Chính sách GenerateAccessTokenManifestGrant.
... <Flow name="generate-access-token-implicit"> <Request> <Step> <Name>GenerateAccessTokenImplicitGrant</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/implicit") and (request.verb = "POST")</Condition> </Flow> ...
Chính sách mẫu
Đây là một chính sách GenerateAccessTokenToken cơ bản giúp xử lý các yêu cầu về mã thông báo cho luồng loại cấp quyền ngầm ẩn. Để biết thông tin về các phần tử cấu hình tuỳ chọn mà bạn có thể định cấu hình bằng chính sách này, hãy xem chính sách OAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="GenerateAccessTokenImplicit"> <DisplayName>GenerateAccessTokenImplicit</DisplayName> <Operation>GenerateAccessTokenImplicitGrant</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về lệnh chuyển hướng vị trí 302
trong tiêu đề phản hồi. Lệnh chuyển hướng này trỏ đến URL được chỉ định trong redirect_uri
và được thêm vào cùng với mã truy cập và thời gian hết hạn mã thông báo. Lưu ý rằng hàm ngầm ẩn
không hỗ trợ mã làm mới. Ví dụ:
https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5
Nếu bạn đặt <GenerateResponse>
thành false, chính sách sẽ không trả về
của bạn. Thay vào đó, phương thức này điền dữ liệu liên quan đến tập hợp các biến luồng sau đây
cấp mã truy cập.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Ví dụ:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Yêu cầu mã uỷ quyền
Nếu đang sử dụng quy trình loại cấp mã uỷ quyền, bạn cần phải được uỷ quyền trước khi có thể yêu cầu mã truy cập.
Yêu cầu mẫu
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code'
trong đó có chính sách GenerateLicenseCode của OAuthV2 được đính kèm tại
Điểm cuối proxy /oauth/authorize
(xem điểm cuối mẫu ở bên dưới).
Bắt buộc tham số
Theo mặc định, các thông số này phải là tham số truy vấn (như trong mẫu ở trên); tuy nhiên,
bạn có thể thay đổi giá trị mặc định này bằng cách định cấu hình <ResponseType>
,
Các phần tử <ClientId>
và <RedirectUri>
trong OAuthV2
được đính kèm với điểm cuối /authorize
này. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
- response_type – Phải được đặt thành giá trị
code
. - client_id – Mã ứng dụng khách của ứng dụng nhà phát triển đã đăng ký.
Không bắt buộc tham số
- redirect_uri – Nếu URI gọi lại toàn bộ (không phải một phần) được chỉ định trong ứng dụng khách đã đăng ký, thì tham số này là không bắt buộc; nếu không thì là bắt buộc. Lệnh gọi lại là URL mà Edge gửi mã xác thực mới tạo. Xem thêm bài viết Đăng ký ứng dụng và quản lý API khoá.
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
Không yêu cầu xác thực cơ bản. Tuy nhiên, mã ứng dụng khách của ứng dụng khách đã đăng ký phải được cung cấp trong yêu cầu.
Điểm cuối mẫu
Dưới đây là cấu hình điểm cuối mẫu để tạo mã uỷ quyền:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <!-- ExpiresIn, in milliseconds. The ref is optional. The explicitly specified value is the default, when the variable reference cannot be resolved. 60000 = 1 minute 120000 = 2 minutes --> <ExpiresIn>60000</ExpiresIn> <GenerateResponse enabled="true"/> </OAuthV2>
Chính sách mẫu
Đây là chính sách GenerateLicenseCode cơ bản. Để biết thông tin về cấu hình tuỳ chọn các phần tử mà bạn có thể định cấu hình bằng chính sách này, hãy xem chính sách OAuthV2.
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về ?code
tham số truy vấn đến vị trí redirect_uri
(URI gọi lại) có yêu cầu uỷ quyền
mã đính kèm. Thông báo được gửi qua lệnh chuyển hướng 302 trên trình duyệt với URL trong tiêu đề Vị trí của
của bạn. Ví dụ: ?code=123456
.
Nếu bạn đặt <GenerateResponse>
thành false
, chính sách này sẽ không
trả về phản hồi. Thay vào đó, phương thức này điền dữ liệu liên quan đến tập hợp biến luồng sau đây
vào mã uỷ quyền.
oauthv2authcode.{policy-name}.code oauthv2authcode.{policy-name}.scope oauthv2authcode.{policy-name}.redirect_uri oauthv2authcode.{policy-name}.client_id
Ví dụ:
oauthv2authcode.GenerateAuthorizationCode.code oauthv2authcode.GenerateAuthorizationCode.scope oauthv2authcode.GenerateAuthorizationCode.redirect_uri oauthv2authcode.GenerateAuthorizationCode.client_id
Làm mới mã truy cập
Mã làm mới là thông tin đăng nhập mà bạn sử dụng để lấy mã truy cập, thường là sau khi truy cập mã thông báo đã hết hạn hoặc không hợp lệ. Mã làm mới được trả về trong phản hồi khi bạn sẽ nhận được mã truy cập.
Cách yêu cầu mã truy cập mới bằng mã làm mới:
Yêu cầu mẫu
Để biết thông tin về cách mã hoá tiêu đề xác thực cơ bản trong lệnh gọi tiếp theo, hãy xem "Mã hoá thông tin xác thực cơ bản".
$ curl -X POST \ -H "Content-type: application/x-www-form-urlencoded" \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ https://myorg-test.apigee.net/my_oauth_endpoint/refresh_accesstoken \ -d 'grant_type=refresh_token&refresh_token=my-refresh-token'
Tham số bắt buộc
- grant_type – Phải được đặt thành giá trị
refresh_token
. - refresh_token – Mã làm mới được liên kết với mã truy cập mà bạn muốn gia hạn.
Theo mặc định, chính sách sẽ tìm các sự kiện này dưới dạng tham số x-www-form-urlencoded
được chỉ định trong nội dung yêu cầu, như được thể hiện trong ví dụ ở trên. Để định cấu hình vị trí thay thế
cho những thông tin đầu vào này, bạn có thể sử dụng <GrantType>
và
Phần tử <RefreshToken>
trong chính sách OAuthV2. Để biết thông tin chi tiết, hãy xem Chính sách về OAuthV2.
Tham số không bắt buộc
- trạng thái – Chuỗi sẽ được gửi lại cùng với phản hồi. Thường dùng để ngăn chặn các cuộc tấn công giả mạo yêu cầu trên nhiều trang web.
- phạm vi – Cho phép bạn lọc danh sách các sản phẩm API mà có thể sử dụng mã thông báo đã tạo. Để biết thông tin chi tiết về phạm vi, hãy xem bài viết Làm việc với phạm vi OAuth2.
Xác thực
- client_id
- client_secret
Bạn phải chuyển ID ứng dụng khách và Mật khẩu ứng dụng khách dưới dạng tiêu đề Xác thực cơ bản
(Được mã hoá base64) hoặc dưới dạng tham số mẫu client_id
và client_secret
. Xem
cả "Mã hoá thông tin xác thực cơ bản".
Khi làm mới mã truy cập, người dùng sẽ không xác thực lại.
Dưới đây là cấu hình điểm cuối mẫu để tạo mã truy cập bằng mã làm mới. Thao tác này sẽ thực thi chính sách RefreshAccessToken.
... <Flow name="generate-refresh-token"> <Request> <Step> <Name>RefreshAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition> </Flow> ...
Chính sách mẫu
Đây là một chính sách RefreshAccessToken cơ bản được định cấu hình để chấp nhận
Loại cấp quyền refresh_token
. Để biết thông tin về các phần tử cấu hình tuỳ chọn
bạn có thể định cấu hình bằng chính sách này, xem chính sách OAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="RefreshAccessToken"> <Operation>RefreshAccessToken</Operation> <GenerateResponse enabled="true"/> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours --> </OAuthV2>
Trả về
Khi bật <GenerateResponse>
, chính sách sẽ trả về phản hồi JSON
chứa mã truy cập mới. Loại cấp quyền refresh_token
hỗ trợ đúc cả hai
quyền truy cập và mã làm mới mới. Ví dụ:
{ "issued_at": "1420301470489", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "refresh_token_issued_at": "1420301470489", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "token_type": "BearerToken", "refresh_token": "8fKDHLryAD9KFBsrpixlq3qPJnG2fdZ5", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "jmZ2Hqv3iNsABUtAAsfWR3QGNctw", "organization_name": "docs", "refresh_token_expires_in": "28799", //--in seconds "refresh_count": "2" }
Bạn nên biết rằng sau khi tạo mã làm mới mới, mã gốc sẽ không còn hợp lệ nữa.
Bạn sẽ nhận được phản hồi ở trên nếu đặt <GenerateResponse>
thành true.
Nếu bạn đặt <GenerateResponse>
thành false, thì chính sách sẽ không trả về phản hồi.
Thay vào đó, phương thức này điền sẵn tập hợp các biến ngữ cảnh (luồng) sau đây bằng dữ liệu liên quan đến
cấp mã truy cập.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ví dụ:
oauthv2accesstoken.RefreshAccessToken.access_token oauthv2accesstoken.RefreshAccessToken.expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token oauthv2accesstoken.RefreshAccessToken.refresh_token_expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token_issued_at oauthv2accesstoken.RefreshAccessToken.refresh_token_status
Mã hoá thông tin xác thực cơ bản
Bạn nên thực hiện lệnh gọi API để yêu cầu mã thông báo hoặc mã xác thực và theo thông số kỹ thuật OAuth 2.0 khuyến nghị để chuyển các giá trị client_id và client_secret dưới dạng tiêu đề Xác thực HTTP-Cơ bản, như được mô tả trong IETF RFC 2617. Để thực hiện việc này, bạn phải base64-mã hóa kết quả của việc kết hợp hai giá trị cùng với một dấu hai chấm phân tách chúng.
Trong mã giả:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))
Trong ví dụ này, ns4fQc14Zg4hKFCNaSzArVuwszX95X
là client_id và
ZIjFyTsNgQNyxI
là mật khẩu ứng dụng khách.
Bất kể bạn sử dụng ngôn ngữ lập trình nào để tính toán giá trị được mã hoá base64, đối với những
thông tin xác thực ứng dụng khách cho trước, kết quả được mã hoá base64 là:
bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==
Sau đó, bạn có thể tạo yêu cầu mã thông báo như sau:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
Tiện ích curl
sẽ thực sự tạo tiêu đề HTTP Cơ bản cho bạn, nếu bạn sử dụng
tùy chọn -u. Mã sau đây tương đương với các giá trị nêu trên:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -u 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
Các môi trường lập trình khác có thể có các phím tắt tương tự để tự động tạo tiêu đề được mã hoá base64.
Băm mã thông báo trong cơ sở dữ liệu
Để bảo vệ quyền truy cập OAuth và mã làm mới trong trường hợp xảy ra vi phạm bảo mật cơ sở dữ liệu, bạn có thể bật tính năng tự động băm mã thông báo trong tổ chức Edge của bạn. Khi tính năng này được bật, Edge tự động tạo phiên bản băm cho mã truy cập OAuth mới tạo và làm mới mã thông báo bằng cách sử dụng thuật toán mà bạn chỉ định. (Sau đây là thông tin về việc băm hàng loạt mã thông báo hiện có.) Chiến lược phát hành đĩa đơn các mã thông báo chưa băm sẽ được dùng trong lệnh gọi API và Edge sẽ xác thực các mã này dựa trên các phiên bản đã băm trong cơ sở dữ liệu.
Các tài sản cấp tổ chức sau đây kiểm soát hoạt động băm mã thông báo OAuth.
features.isOAuthTokenHashingEnabled = true features.OAuthTokenHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
Nếu bạn hiện có các mã thông báo đã băm và muốn giữ lại các mã này cho đến khi hết hạn, hãy đặt giá trị các tài sản sau trong tổ chức của bạn, trong đó thuật toán băm khớp với (ví dụ: SHA1, giá trị mặc định cũ của Edge). Nếu mã thông báo chưa được băm, hãy sử dụng NHẤN.
features.isOAuthTokenFallbackHashingEnabled = true features.OAuthTokenFallbackHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
Nếu bạn là khách hàng sử dụng dịch vụ đám mây của Edge, hãy liên hệ với Bộ phận hỗ trợ Apigee Edge để thiết lập các thuộc tính trên tổ chức của mình và bạn có thể băm hàng loạt các mã thông báo hiện có.
Chủ đề có liên quan
- Triển khai loại cấp thông tin đăng nhập của ứng dụng
- Triển khai loại cấp mã uỷ quyền
- API khoá học trực tuyến về bảo mật (bao gồm OAuth)
- Chính sách OAuthV2 -- Có nhiều ví dụ minh hoạ cách gửi yêu cầu đến máy chủ uỷ quyền và cách định cấu hình chính sách OAuthV2.