Cookie có xác thực hoặc ủy quyền không?

Hầu hết các lệnh gọi tới API đều yêu cầu xác thực — đối với những lệnh gọi này, bạn (khách hàng) phải chứng minh rằng người dùng mà bạn thay mặt thực hiện cuộc gọi đã được xác thực bởi Nền tảng nhận dạng cho đối tượng thuê của bạn. Nền tảng nhận dạng sử dụng cookie để xác thực, như sau

  1. Máy khách gọi API để đăng nhập người dùng. (Để biết chi tiết mã hóa, hãy xem Bắt đầu phiên xác thực người dùng. )
  2. Máy chủ xác thực người dùng và thực hiện các thao tác sau
    a. Tạo mã thông báo truy cập xác định duy nhất phiên của người dùng
    b. Lưu trữ mã thông báo truy cập và giữ nó cho đến khi người dùng đăng xuất
    c. Đính kèm mã thông báo truy cập vào cookie xác thực (.ASPXAUTH) mà cookie này sẽ trả về ứng dụng khách trong tiêu đề HTTP của lệnh gọi xác thực API. (Lưu ý rằng máy chủ tạo các cookie bổ sung mà nó cũng trả lại cho máy khách. )
    d. Đính kèm và trả về cookie CCSID trong tiêu đề HTTP của xác thực API. Ly tâm sử dụng điều này khi đánh giá các quy tắc chính sách, để xác định xem thiết bị khách đang thực thi các điểm cuối đã được sử dụng trước đó chưa. Để biết thêm thông tin xem
  3. Khách hàng phải làm như sau
  • Lưu các cookie được máy chủ trả về
  • Chuyển chúng vào tiêu đề HTTP của các lệnh gọi tiếp theo tới API
  1. Máy chủ xác thực phiên người dùng cho mỗi lệnh gọi tới API bằng cách kiểm tra mã thông báo do máy khách chuyển qua trong cookie tiêu đề HTTP và xác minh rằng mã đó giống hệt với mã thông báo mà máy chủ đã tạo và lưu ở Bước 2
  2. Khi người dùng đăng xuất, máy chủ sẽ xóa cookie cho người dùng đó

Lưu và chuyển cookie xác thực

Như đã lưu ý, máy chủ tạo cookie như một phần của quy trình xác thực. Nền tảng nhận dạng triển khai quy trình xác thực nhiều phần với hai lệnh gọi API

  • /Bảo mật/Bắt đầu xác thực. Máy khách gọi /Security/StartAuthentication và chuyển các tham số để nhận dạng duy nhất người dùng để xác thực. Trong hầu hết các trường hợp, máy chủ trả về một gói bao gồm một hoặc nhiều thách thức bảo mật để người dùng trả lời
  • /Security/AdvanceAuthentication. Khách hàng gọi /Security/AdvanceAuthentication một hoặc nhiều lần để giải quyết các thách thức về bảo mật. Khi máy chủ xác thực thành công người dùng, nó sẽ trả về cookie xác thực cho máy khách trong tiêu đề HTTP của lệnh gọi /Security/AdvanceAuthentication. Máy khách phải lưu cookie để chúng có sẵn để chuyển sang các cuộc gọi tiếp theo cho người dùng được xác thực

Mặc dù quy trình xác thực điển hình yêu cầu một cuộc gọi tới /Security/StartAuthentication, sau đó là một cuộc gọi tới /Security/AdvanceAuthentication, một cuộc gọi tới /Security/StartAuthentication có thể dẫn đến xác thực thành công. Do đó, khách hàng phải luôn lưu các cookie được trả lại bởi /Security/StartAuthentication cũng như những cookie được trả lại bởi /Security/AdvanceAuthentication

Một cách để lưu cookie là kết xuất chúng vào một tệp khi gọi /Security/StartAuthentication/Security/AdvanceAuthentication. Sau đó, bạn có thể chuyển tệp chứa cookie cho mỗi lệnh gọi tiếp theo tới API. Ví dụ sau đây cho thấy cách thực hiện việc này với cURL

Để bắt đầu quá trình xác thực, hãy gọi /Security/StartAuthentication và chỉ định người dùng để xác thực và phiên bản của chức năng mà bạn đang gọi. Lưu cookie vào một tệp bằng cách chỉ định tham số

{
    "ClientHints": 
        {
        "PersistDefault": False,
        "AllowPersist": True,
        "AllowForgotPassword": False
        },
    "Version": "V1",
    "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
    "Challenges": [
        {
        "Mechanisms": [{
            "AnswerType": "Text",
            "Name": "UP",
            "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d"
            }]},
        {
        "Mechanisms": ""
        }]
        "Summary": "NewPackage",
        "TenantId": "ABC1234"
}
9. Lưu ý rằng TenantId là tùy chọn nếu tên máy chủ chứa URL dành riêng cho đối tượng thuê hoặc tên người dùng có bí danh đã biết cho phép máy chủ xác định đối tượng thuê

Xoăn

.\curl -H "X-CENTRIFY-NATIVE-CLIENT:1" -H "Content-type: application/json"
-d "{
     User: '[email protected]',
     Version: '1.0',
     TenantId: 'ABC1234'
     }"
     --dump-header headers.txt 
'https://pod1.centrify.com/Security/StartAuthentication'

Cuộc gọi trả về gói MFA bao gồm một hoặc nhiều thách thức bảo mật. Những thách thức thực tế mà máy chủ trả về phụ thuộc vào một số yếu tố, bao gồm cài đặt bảo mật cho người dùng, liệu người dùng đang đăng nhập từ một thiết bị đã biết hay một thiết bị không xác định, địa chỉ IP có nằm trong mạng công ty hay không, v.v. Mục đích của ví dụ này là chỉ ra cách lưu cookie xác thực, vì vậy nó chỉ ra một trường hợp đơn giản với một cơ chế thử thách

JSON

{
    "ClientHints": 
        {
        "PersistDefault": False,
        "AllowPersist": True,
        "AllowForgotPassword": False
        },
    "Version": "V1",
    "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
    "Challenges": [
        {
        "Mechanisms": [{
            "AnswerType": "Text",
            "Name": "UP",
            "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d"
            }]},
        {
        "Mechanisms": ""
        }]
        "Summary": "NewPackage",
        "TenantId": "ABC1234"
}

Để đối phó với thách thức xác thực này, hãy gọi /Security/AdvanceAuthentication. Trong cuộc gọi, hãy lưu các cookie xác thực bằng cách kết xuất chúng vào một tệp;

Xoăn

.\curl -H "Content-type: application/json"
       -d "{
         "TenantId": "AB123",
         "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
         "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d",
         "Action": "Answer",
         "Answer": "Pass1234"
        }"
       --dump-header headers.txt 
 
https://pod1.centrify.com/security/AdvanceAuthentication

Để xác thực thành công, máy chủ trả về một phản hồi tương tự như phản hồi LoginSuccess sau đây, được hiển thị tại đây

JSON

{
    "SystemID": "AB123",
    "DisplayName": "QA1",
    "EmailAddress": "[email protected]",
    "PasswordExpDate": "Fri, 31 Dec 9999 15:59:59 GMT-08:00",
    "CustomerID": "AB123",
    "AuthLevel": "Normal",
    "PodFqdn": "pod1.centrify.com",
    "Auth": "C85562A8A3B425095981BFFD7D92F...",
    "User": "[email protected]",
    "UserDirectory": "CDS",
    "Summary": "LoginSuccess",
    "UserId": "c2c7bcc6-9560-44e0-8dff-5be221cd37ee",
    "SourceDsType": "CDS"
}

Giá trị trường Tóm tắt. "______3_______2" cho biết rằng người dùng đã được xác thực, điều đó có nghĩa là máy chủ đã trả lại cookie xác thực. Tham số

{
    "ClientHints": 
        {
        "PersistDefault": False,
        "AllowPersist": True,
        "AllowForgotPassword": False
        },
    "Version": "V1",
    "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
    "Challenges": [
        {
        "Mechanisms": [{
            "AnswerType": "Text",
            "Name": "UP",
            "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d"
            }]},
        {
        "Mechanisms": ""
        }]
        "Summary": "NewPackage",
        "TenantId": "ABC1234"
}
9 mà bạn đã chuyển với lệnh gọi đã lưu cookie vào tệp
.\curl -H "Content-type: application/json"
       -d "{
         "TenantId": "AB123",
         "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
         "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d",
         "Action": "Answer",
         "Answer": "Pass1234"
        }"
       --dump-header headers.txt 
 
https://pod1.centrify.com/security/AdvanceAuthentication
4. Giờ đây, bạn có thể thay mặt người dùng này chuyển các cookie này tới các cuộc gọi tiếp theo bằng cách sử dụng tham số
.\curl -H "Content-type: application/json"
       -d "{
         "TenantId": "AB123",
         "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
         "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d",
         "Action": "Answer",
         "Answer": "Pass1234"
        }"
       --dump-header headers.txt 
 
https://pod1.centrify.com/security/AdvanceAuthentication
5 để chuyển tệp
.\curl -H "Content-type: application/json"
       -d "{
         "TenantId": "AB123",
         "SessionId": "81c60352-ee50-422c-b5c9-e73b55b8f314",
         "MechanismId": "3f2478af-24ef-4ca6-981a-b54c3aef118d",
         "Action": "Answer",
         "Answer": "Pass1234"
        }"
       --dump-header headers.txt 
 
https://pod1.centrify.com/security/AdvanceAuthentication
4 cho cuộc gọi. Ví dụ: sau khi xác thực người dùng, bạn có thể truy xuất thông tin cho người dùng bằng các cuộc gọi này

Mã thông báo xác thực có phải là cookie không?

Sự khác biệt chính giữa cookie và mã thông báo là bản chất của chúng. mã thông báo không có trạng thái trong khi cookie có trạng thái . Với suy nghĩ này, tại sao cần phải lưu trữ xác thực trên trình duyệt?

Là mã thông báo xác thực hoặc ủy quyền?

Một mã thông báo xác thực (mã thông báo bảo mật) là một “thiết bị đáng tin cậy” được sử dụng để truy cập tài nguyên bị hạn chế điện tử (thường là ứng dụng hoặc tài nguyên công ty). . Nó có thể được coi là một khóa điện tử cho phép người dùng xác thực và chứng minh danh tính của mình bằng cách lưu trữ một số loại thông tin cá nhân.