Mã thông báo làm mới Vương quốc MongoDB

Làm mới mã thông báo (RFC 6749) cho phép OAuth 2. 0 khách hàng nhận mã thông báo truy cập mới có phạm vi giống hệt hoặc hẹp hơn so với ban đầu và không liên quan đến chủ sở hữu tài nguyên. AM có thể phát hành mã thông báo làm mới cho tất cả OAuth 2. 0/Luồng cấp phép OpenID Connect ngoại trừ luồng thông tin xác thực ứng dụng khách và ẩn

Giới thiệu về mã thông báo làm mới

Mã thông báo truy cập có thời gian tồn tại ngắn vì chúng cấp cho bất kỳ người mang quyền truy cập nào vào tài nguyên được bảo vệ

Làm mới mã thông báo cung cấp OAuth 2. 0 khách hàng thứ gì đó để đổi lấy mã thông báo truy cập mới. Trao đổi không liên quan đến sự tương tác của chủ sở hữu tài nguyên. Mã thông báo làm mới hữu ích khi OAuth 2. 0 khách hàng cần

  • Truy cập lâu dài vào một tài nguyên được bảo vệ

  • Truy cập khi không có chủ sở hữu tài nguyên

  • Nhiều thao tác để truy cập cùng một tài nguyên được bảo vệ và chủ sở hữu tài nguyên chỉ phải cấp phép một lần

Mã thông báo làm mới an toàn hơn mã thông báo truy cập lâu dài. Để đổi mã thông báo làm mới lấy mã thông báo truy cập, OAuth 2. 0 khách hàng phải xác thực. Người dùng độc hại có mã thông báo truy cập bị xâm nhập có quyền truy cập vào tài nguyên được bảo vệ. Người dùng có mã thông báo làm mới cũng phải có ID ứng dụng khách và bí mật ứng dụng khách để nhận mã thông báo truy cập

Cài đặt cho mã thông báo làm mới

Làm mới cài đặt cấu hình mã thông báo bao gồm

phát hành mã thông báo

Theo mặc định, Identity Cloud phát hành mã thông báo làm mới bất cứ khi nào phát hành mã thông báo truy cập. Khi Identity Cloud phát hành mã thông báo làm mới mới, mã thông báo làm mới cũ sẽ hết hạn

Bạn có thể tắt cấp mã thông báo làm mới trong giao diện người dùng quản trị AM OAuth 2. 0 trong Realms > Realm Name > Services > OAuth2 Provider > Core với.

Phát hành mã thông báo làm mới

Có phát hành mã thông báo làm mới với mã thông báo truy cập hay không

Phát hành mã thông báo làm mới khi làm mới mã thông báo truy cập

Có phát hành mã thông báo làm mới mới khi trao đổi mã thông báo làm mới lấy mã thông báo truy cập hay không

Tuổi thọ của mã thông báo

Mã thông báo làm mới tồn tại lâu dài theo mặc định

Bạn đặt thời gian tồn tại của mã thông báo làm mới trong OAuth 2. 0 cài đặt nhà cung cấp hoặc cho OAuth 2 riêng lẻ. 0 khách hàng. Theo mặc định, AM dựa trên OAuth 2. 0 cấu hình nhà cung cấp

Trong giao diện người dùng quản trị Identity Cloud, bạn có thể thay đổi cài đặt cho mỗi khách hàng trong Ứng dụng > ID khách hàng > Đăng nhập > Cài đặt nâng cao > Thời gian sử dụng mã thông báo.

Để biết chi tiết, tham khảo tài liệu tham khảo

thời gian ân hạn

Thời gian gia hạn chỉ định khoảng thời gian OAuth 2. 0 khách hàng có thể phát lại các yêu cầu đổi mã thông báo làm mới lấy mã thông báo truy cập nếu có sự cố mạng hoặc sự cố tạm thời khác

Để biết chi tiết, tham khảo tài liệu tham khảo

Khách hàng có thể thu hồi mã thông báo làm mới bằng cách sử dụng điểm cuối /oauth2/token/revoke. Lần tới khi khách hàng yêu cầu quyền truy cập vào tài nguyên được bảo vệ, nó phải liên quan đến chủ sở hữu tài nguyên

Minh họa mã thông báo làm mới

Chứng minh bằng cách sử dụng mã thông báo làm mới với các bước sau

  • .

  • .

  • .

  • .

OAuth 2. 0 khách hàng

  1. Tạo một OAuth 2 bí mật. 0 tài khoản khách hàng

    Trong giao diện người dùng quản trị Identity Cloud, hãy chọn Ứng dụng > + Thêm ứng dụng và tạo một mới . client with the following credentials:

    ID khách hàng

    myClient

    Bí mật khách hàng

    forgerock

  2. Dưới Đăng nhập > Cài đặt chung > URL đăng nhập , thêm https://www.example.com:443/callback và lưu công việc của bạn.

chủ sở hữu tài nguyên

OAuth 2. 0 khách hàng yêu cầu mã thông báo truy cập thay mặt chủ sở hữu tài nguyên. Tạo OAuth 2. 0 tài khoản chủ sở hữu tài nguyên

  1. .

  2. Ghi lại tên người dùng và mật khẩu

Nhận mã thông báo truy cập

  1. Xác thực là chủ sở hữu tài nguyên

    curl \
    --request POST \
    --header 'Content-Type: application/json' \
    --header 'X-OpenAM-Username: ' \
    --header 'X-OpenAM-Password: ' \
    --header 'Accept-API-Version: resource=2.0, protocol=1.0' \
    'https:///am/json/realms/root/realms/alpha/authenticate'
    {"tokenId":"","successUrl":"/enduser/?realm=/alpha","realm":"/alpha"}

  2. Yêu cầu mã ủy quyền với tư cách là khách hàng

    curl \
    --dump-header - \
    --request POST \
    --Cookie '=' \
    --data 'scope=openid' \
    --data 'response_type=code' \
    --data 'client_id=myClient' \
    --data 'csrf=' \
    --data 'redirect_uri=https://www.example.com:443/callback' \
    --data 'state=abc123' \
    --data 'decision=allow' \
    'https:///am/oauth2/realms/root/realms/alpha/authorize'
    …​
    location: https://www.example.com:443/callback?code=&iss=https%3A%2F%2F…​
    …​

  3. Trao đổi mã ủy quyền để lấy mã thông báo truy cập với tư cách là khách hàng

    curl \
    --request POST \
    --user 'myClient:forgerock' \
    --data 'grant_type=authorization_code' \
    --data 'code=' \
    --data 'redirect_uri=https://www.example.com:443/callback' \
    'https:///am/oauth2/realms/root/realms/alpha/access_token'
    {
      "access_token": "",
      "refresh_token": "",
      "scope": "openid",
      "id_token": "",
      "token_type": "Bearer",
      "expires_in": 3599
    }

Làm mới mã thông báo truy cập

Trao đổi mã thông báo làm mới để lấy mã thông báo truy cập mới

$ curl \
--request POST \
--data "grant_type=refresh_token" \
--data "refresh_token=" \
--data "client_id=myClient" \
--data "client_secret=forgerock" \
--data "scope=openid" \
"https:///am/oauth2/realms/root/realms/alpha/access_token"
{
  "access_token": "",
  "refresh_token": "",
  "scope": "openid",
  "id_token": "",
  "token_type": "Bearer",
  "expires_in": 3599
}

  • Tham số scope là tùy chọn. Theo mặc định, AM phát hành mã thông báo truy cập có cùng phạm vi với mã thông báo ban đầu

    Làm cách nào để lưu trữ mã thông báo làm mới trong Mongodb?

    Xác định lược đồ của chúng tôi để tạo tài liệu cơ sở dữ liệu và tạo mã thông báo tương ứng của chúng tôi. .
    Xác định logic xác minh mã thông báo truy cập. .
    Xác định và nhập phần mềm trung gian mã thông báo của chúng tôi trong bộ điều khiển xác thực/ủy quyền của chúng tôi. .
    Xác định đăng nhập mã thông báo làm mới của chúng tôi trong bộ điều khiển logic ủy quyền/xác thực của chúng tôi

    JWT có cần mã thông báo làm mới không?

    JWT (Mã thông báo Web JSON) . Sau khi hết thời hạn hiệu lực này, máy chủ sẽ không cho phép truy cập vào tài nguyên bằng mã thông báo này nữa. Trong bước này, người dùng sẽ phải nhận mã thông báo truy cập mới bằng cách xác thực lại hoặc bằng một số phương pháp bổ sung. làm mới mã thông báo .

    Điều gì xảy ra nếu mã thông báo làm mới bị xâm phạm?

    Nếu mã thông báo làm mới bị xâm phạm, thì mã đó ít có khả năng hợp lệ , ngăn người dùng trái phép giành quyền truy cập vào tài nguyên bảo mật.

    Bạn nên làm mới mã thông báo truy cập bao lâu một lần?

    Vì mã thông báo làm mới hết hạn nên cách an toàn nhất là lên lịch một tác vụ (công việc định kỳ) để chạy tập lệnh sẽ làm mới mã thông báo truy cập, chẳng hạn như 12 giờ một lần.