Chính sách về Xác nhận SAML

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Nội dung

  • Xác thực và uỷ quyền thư đến: Xác thực Xác nhận SAML chính sách
    Loại chính sách SAML cho phép các proxy API xác thực nội dung xác nhận SAML được đính kèm các yêu cầu SOAP gửi đến. Chính sách SAML xác thực thư đến có chứa Xác nhận SAML có chữ ký số, từ chối nếu xác nhận không hợp lệ và đặt các biến cho phép các chính sách bổ sung hoặc chính các dịch vụ phụ trợ để xác thực thông tin trong câu nhận định.
  • Tạo mã thông báo đi: Tạo chính sách Xác nhận SAML
    Loại chính sách SAML cho phép các proxy API đính kèm câu nhận định SAML vào yêu cầu XML gửi đi. Sau đó, bạn có thể sử dụng những câu nhận định đó để cho phép các dịch vụ phụ trợ tăng cường bảo mật xử lý để xác thực và uỷ quyền.

Mẫu

Tạo thông tin xác nhận SAML

<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

Tạo thông tin xác nhận SAML

Xác thực nội dung xác nhận SAML

<ValidateSAMLAssertion name="SAML" ignoreContentType="false">
  <Source name="request">
    <Namespaces>
      <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
      <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
      <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
    </Namespaces>
    <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath>
    <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

Xác thực thông tin xác nhận SAML


Tham chiếu phần tử

Tạo nội dung xác nhận SAML

Tên trường Mô tả
name thuộc tính Tên của phiên bản chính sách. Tên phải là duy nhất trong tổ chức. Bạn chỉ có thể sử dụng các ký tự trong tên này: A-Z0-9._\-$ %. Tuy nhiên, giao diện người dùng Quản lý có các quy tắc hạn chế bổ sung, chẳng hạn như tự động xoá các ký tự không phải là chữ và số.
ignoreContentType thuộc tính Giá trị boolean có thể đặt thành true hoặc false. Theo mặc định, câu nhận định sẽ không được tạo nếu loại nội dung của thông báo không phải là tệp XML Loại nội dung. Nếu bạn đặt thuộc tính này thành true thì thông báo sẽ được coi là XML bất kể loại Nội dung.
Issuer
Giá trị nhận dạng riêng biệt của nhà cung cấp danh tính. Nếu ref không bắt buộc hiện có, thì giá trị của Công ty phát hành sẽ được chỉ định trong thời gian chạy dựa trên biến được chỉ định. Nếu không có thuộc tính không bắt buộc ref, thì thuộc tính giá trị của Tổ chức phát hành.
KeyStore
Tên của KeyStore chứa khoá riêng tư và bí danh của khoá riêng tư dùng để ký kỹ thuật số xác nhận SAML.
OutputVariable
FlowVariable
Message Mục tiêu của chính sách. Các giá trị hợp lệ là message, request, và response. Khi bạn đặt thành message, chính sách này sẽ có điều kiện truy xuất đối tượng thông báo dựa trên điểm đính kèm của chính sách. Khi được đính kèm với Luồng yêu cầu, chính sách sẽ phân giải message thành yêu cầu và khi được đính kèm vào Luồng phản hồi, thì chính sách sẽ phân giải message thành phản hồi.
XPath Một biểu thức vai trò cho biết phần tử trên tài liệu XML đi chính sách sẽ đính kèm nội dung xác nhận SAML.
SignatureAlgorithm SHA1 hoặc SHA256
Subject
Giá trị nhận dạng duy nhất của chủ thể trong nội dung xác nhận SAML. Nếu giá trị không bắt buộc Đã có thuộc tính ref, khi đó giá trị của Tiêu đề sẽ được gán tại dựa trên biến được chỉ định. Nếu thuộc tính không bắt buộc ref là hiện tại thì giá trị của Tiêu đề sẽ được sử dụng.
Template
Nếu có, thì câu nhận định sẽ được tạo bằng cách chạy mẫu này, thay thế mọi thứ đều được ký hiệu là {} với biến tương ứng, sau đó theo số ký kết quả. Mẫu này được xử lý theo các quy tắc chính sách của AttributionMessage. Xem phần Giao Chính sách về tin nhắn.

Xác thực xác nhận SAML

Tên trường Mô tả
name thuộc tính
Tên của phiên bản chính sách. Tên phải là duy nhất trong tổ chức. Bạn chỉ có thể sử dụng các ký tự trong tên này: A-Z0-9._\-$ %. Tuy nhiên, giao diện người dùng Quản lý thực thi thêm các hạn chế, chẳng hạn như tự động xoá các ký tự không phải là chữ và số.
ignoreContentType thuộc tính Giá trị boolean có thể đặt thành true hoặc false. Theo mặc định, câu nhận định sẽ không được tạo nếu loại nội dung của thông báo không phải là tệp XML Loại nội dung. Nếu bạn đặt thuộc tính này thành true thì thông báo sẽ được coi là XML bất kể loại Nội dung.
Source Mục tiêu của chính sách. Các giá trị hợp lệ là message, request, và response. Khi bạn đặt thành message, chính sách này sẽ có điều kiện truy xuất đối tượng thông báo dựa trên điểm đính kèm của chính sách. Khi được đính kèm với Luồng yêu cầu, chính sách sẽ phân giải message thành yêu cầu và khi được đính kèm vào Luồng phản hồi, thì chính sách sẽ phân giải message thành phản hồi.
XPath
Không dùng nữa. Con của Source. Sử dụng AssertionXPathSignedElementXPath.
AssertionXPath
Con của Source. Một biểu thức vai trò cho biết phần tử trên tài liệu XML gửi đến mà chính sách có thể trích xuất nội dung xác nhận SAML.
SignedElementXPath
Con của Source. Một biểu thức vai trò cho biết phần tử trên tài liệu XML bên trong mà chính sách có thể trích xuất phần tử đã ký. Chiến dịch này có thể khác hoặc giống với diễn ra trong AssertionXPath.
TrustStore
Tên của TrustStore chứa các chứng chỉ X.509 đáng tin cậy dùng để xác thực chữ ký số trên thông tin xác nhận SAML.
RemoveAssertion
Giá trị boolean có thể đặt thành true hoặc false. Thời gian true, thông tin xác nhận SAML sẽ bị xoá khỏi thông báo yêu cầu trước tin nhắn đó sẽ được chuyển tiếp đến dịch vụ phụ trợ.

Lưu ý về cách sử dụng

Thông số kỹ thuật của Ngôn ngữ đánh dấu xác nhận bảo mật (SAML) xác định các định dạng và giao thức cho phép các ứng dụng trao đổi thông tin ở định dạng XML để xác thực và uỷ quyền.

"Xác nhận bảo mật" là mã thông báo đáng tin cậy mô tả một thuộc tính của ứng dụng, người dùng ứng dụng hoặc một số người tham gia khác trong giao dịch. Xác nhận bảo mật do 2 bên quản lý và sử dụng loại thực thể:

  • Nhà cung cấp danh tính: Tạo xác nhận bảo mật thay mặt cho người tham gia
  • Nhà cung cấp dịch vụ: Xác thực các khẳng định bảo mật thông qua mối quan hệ đáng tin cậy với danh tính các nhà cung cấp

Nền tảng API có thể đóng vai trò là nhà cung cấp danh tính và nhà cung cấp dịch vụ. Thẻ này đóng vai trò như một nhà cung cấp danh tính bằng cách tạo các câu nhận định và đính kèm chúng để yêu cầu thông báo, khiến những câu nhận định đó câu nhận định có sẵn để xử lý bằng các dịch vụ phụ trợ. Hoạt động với vai trò là một nhà cung cấp dịch vụ bằng cách xác thực câu nhận định trong thông báo yêu cầu đến.

Loại chính sách SAML hỗ trợ xác nhận SAML phù hợp với phiên bản 2.0 của Lõi SAML Thông số kỹ thuật và Phiên bản 1.0 của thông số kỹ thuật Cấu hình mã thông báo SAML của WS-Security.

Tạo nội dung xác nhận SAML

Xử lý chính sách:

  1. Nếu thông báo không phải là XML và IgnoreContentType không được đặt thành true, thì nêu lỗi.
  2. Nếu "Mẫu" được đặt, sau đó xử lý mẫu theo mô tả cho chính sách AttributionMessage. Nếu thiếu bất kỳ biến nào và chưa đặt IgnoreUnresolvedVariables, hãy báo lỗi.
  3. Nếu "Mẫu" chưa được đặt, thì hãy tạo câu nhận định bao gồm các giá trị của Tham số của Chủ thể và Tổ chức phát hành hoặc thông số tham chiếu của chúng.
  4. Ký xác nhận bằng khoá đã chỉ định.
  5. Thêm khẳng định vào thông báo tại NETWORK được chỉ định.

Xác thực xác nhận SAML

Xử lý chính sách:

  1. Chính sách này kiểm tra thư đến để xác minh rằng loại nội dung đa phương tiện của yêu cầu là XML, bằng cách kiểm tra xem loại nội dung có khớp với định dạng text/(.*+)?xml hoặc application/(.*+)?xml Nếu loại phương tiện không phải là XML và Nếu bạn không đặt <IgnoreContentType>, chính sách sẽ báo lỗi.
  2. Chính sách này sẽ phân tích cú pháp tệp XML. Nếu phân tích cú pháp không thành công thì lỗi sẽ xảy ra.
  3. Chính sách này sẽ trích xuất phần tử đã ký và nội dung xác nhận quyền sở hữu theo Wi-Fi tương ứng được chỉ định (<SignedElementXPath><AssertionXPath>). Nếu một trong hai đường dẫn này không trả về phần tử, thì chính sách sẽ gây ra lỗi.
  4. Chính sách này sẽ xác minh rằng Xác nhận giống với phần tử đã ký, hoặc là phần tử con của phần tử đã ký. Nếu điều này không đúng thì chính sách sẽ báo cáo lỗi.
  5. Nếu một trong hai thuộc tính <NotBefore> hoặc <NotOnOrAfter> có xuất hiện trong câu nhận định, thì chính sách này sẽ kiểm tra dấu thời gian hiện tại so với các giá trị này, như mô tả trong phần 2.5.1 Core SAML.
  6. Chính sách này sẽ áp dụng mọi quy tắc bổ sung để xử lý "Điều kiện" như được mô tả trong phần SAML Core 2.5.1.1.
  7. Chính sách này sẽ xác thực chữ ký số XML bằng các giá trị của <TrustStore><ValidateSigner> như mô tả ở trên. Nếu quá trình xác thực không thành công, thì chính sách sẽ báo lỗi.

Khi chính sách hoàn tất mà không gây ra lỗi, nhà phát triển proxy có thể chắc chắn trong số sau:

  • Chữ ký số trong nội dung nhận định là hợp lệ và do một CA đáng tin cậy ký
  • Xác nhận có hiệu lực trong khoảng thời gian hiện tại
  • Chủ thể và người đưa ra câu nhận định sẽ được trích xuất và thiết lập trong các biến luồng. Đó là trách nhiệm của các chính sách khác về việc sử dụng các giá trị này để xác thực bổ sung, chẳng hạn như kiểm tra xem tên chủ đề có hợp lệ không hoặc chuyển tên đó đến một hệ thống mục tiêu để xác thực.

Các chính sách khác (chẳng hạn như ExtractVariables) có thể dùng để phân tích cú pháp XML thô của câu nhận định để xác thực phức tạp hơn.


Biến luồng

Có nhiều thông tin có thể được chỉ định trong nội dung xác nhận SAML. SAML Bản thân xác nhận là XML có thể được phân tích cú pháp bằng chính sách ExtractVariables và để triển khai các quy trình xác thực phức tạp hơn.

Biến Mô tả
saml.id Mã xác nhận SAML
saml.issuer "Công ty phát hành" của câu nhận định, được chuyển đổi từ loại XML gốc thành chuỗi
saml.subject "Chủ đề" của câu nhận định, được chuyển đổi từ loại XML gốc thành chuỗi
saml.valid Trả về true hoặc false dựa trên kết quả kiểm tra tính hợp lệ
saml.issueInstant IssueInstant
saml.subjectFormat Định dạng tiêu đề
saml.scmethod Phương thức xác nhận chủ thể
saml.scdaddress Địa chỉ dữ liệu xác nhận chủ thể
saml.scdinresponse Dữ liệu xác nhận chủ thể trong câu trả lời
saml.scdrcpt Người nhận dữ liệu xác nhận chủ thể
saml.authnSnooa Phiên AuthnStatement NotOnOrSau
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex Chỉ mục phiên AuthnStatement

Tham chiếu lỗi

Phần này mô tả các mã lỗi và thông báo lỗi được trả về và các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi chính sáchXử lý lỗi.

Lỗi triển khai

Những lỗi này có thể xảy ra khi bạn triển khai proxy có chứa chính sách này.

Tên lỗi Nguyên nhân Khắc phục
SourceNotConfigured Một hoặc nhiều thành phần sau đây trong quy trình Xác thực SAML chính sách không được xác định hoặc bị trống: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured Nếu phần tử <TrustStore> trống hoặc không được chỉ định trong Xác thực chính sách SAMLAssertion, thì việc triển khai proxy API sẽ không thành công. Bạn phải có một Cửa hàng tin cậy hợp lệ.
NullKeyStoreAlias Nếu phần tử con <Alias> bị trống hoặc không được chỉ định trong <Keystore> thành phần của Chính sách tạo xác nhận SAML, sau đó là việc triển khai API proxy. Bạn phải có email đại diện hợp lệ cho Kho khoá.
NullKeyStore Nếu phần tử con <Name> bị trống hoặc không được chỉ định trong <Keystore> phần tử của chính sách Tạo SAMLAssertion, sau đó là triển khai API proxy. Bạn phải nhập tên Kho khoá hợp lệ.
NullIssuer Nếu phần tử <Issuer> bị trống hoặc không được chỉ định trong mục Tạo SAML Xác nhận chính sách, thì việc triển khai proxy API sẽ không thành công. Đáp bạn phải nhập giá trị <Issuer> hợp lệ.

Biến lỗi

Các biến này được đặt khi xảy ra lỗi thời gian chạy. Để biết thêm thông tin, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách.

Biến Trong đó Ví dụ:
fault.name="fault_name" fault_name là tên của lỗi. Tên lỗi là phần cuối cùng của mã lỗi. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed Đối với cấu hình chính sách xác nhận SAML nhằm xác thực, tiền tố lỗi là ValidateSAMLAssertion. GenerateSAMLAssertion.failed = true

Ví dụ về phản hồi khi gặp lỗi

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

Ví dụ về quy tắc lỗi

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

Chủ đề có liên quan

Trích xuất biến: Trích xuất biến chính sách của Google