日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

SAML2.0對接

更新時間:

前言

安全斷言標記語言(英語:Security Assertion Markup Language,簡稱SAML)是一個基于XML的開源標準數據格式,它在系統之間交換身份驗證和授權數據,尤其是在身份提供者和服務提供者之間交換。IoT支持基于 SAML 2.0 的 SSO(Single Sign On,單點登錄),也稱為身份聯合登錄。本文為您介紹當企業希望使用自有的身份系統來實現 SSO 時,通過IoT提供的 SSO 解決方案,幫助企業實現與IoT的 SSO。

術語

  • 身份提供商(IDP, Identity Provider),身份提供商,在本案例中,是三方oc平臺承擔

  • 服務提供商(SP, Service Provider),服務提供商,在本案例中,由IoT平臺承擔

  • 斷言(Assertion),由IDP頒發,標識用戶賬號或身份數據,用于建立登錄態

  • 證書(Certificate),用于數據加簽或者加密,可以配置不同的證書,用于加簽和加* 密,SAML使用自簽的x509證書

  • BuyApp,三方購買的應用,與阿里云iot域名不同

  • isv_oc,三方的運營平臺,與阿里云iot域名不同

  • ISV_AuthServer: 三方認證服務器

認證過程

流程示意圖

image.png
  1. ISV導入IoT SAML證書,認證callback地址,并將自有賬戶體系同步至IoT

  2. 用戶進入三方應用的登錄頁面,輸入用戶名及密碼后,IDP進行身份確認

  3. IDP頁面重定向到IoT SAML認證地址

  4. SP進行證書驗證及有效性判斷,并建立IoT用戶登錄態

  5. SP頁面重定向到callback url地址(一般為三方應用的主頁)

系統調用圖

sep整理-Page-9.png

接入流程

Step1. 密鑰生成

(1) 生成RSA私鑰

openssl genrsa -aes128 -passout pass:${password} -out rsa_aes_private.key 2048

(2) 生成證書請求文件

openssl req -new -key rsa_aes_private.key -passin pass:${password} -out client.pem #可以添加上-days 365參數延長證書有效期

_(3) 生成最終的SAML使用的x509證書

openssl req -x509 -key rsa_aes_private.key -in client.pem -out client.pem

(4) 通過以上2步之后會獲取2個文件,一個是rsa_aes_private.key 這個是密鑰,密鑰自己妥善保存,如果泄露則所在的租戶賬戶都將面臨風險,證書用于生成SAML元數據是可以對外公布的。

Step2. 生成IDP元數據

可參考demo中的com.aliyun.iotx.samldemo.controller.SAMLController#metadata函數來查看如何生產元數據文件

Step3. 導入IDP元數據

登錄SI工作臺,創建項目并設置自有賬戶體系>導入step2中生成的元數據文件,并填寫saml call back 地址

Step4. 創建公司

詳情參見組織管理相關接口,創建相關組織結構,為導入員工做準備。

Step5. 導入員工

詳情參見賬戶管理相關接口,批量導入應用的賬戶信息,建議手機號作為用戶唯一標識。

Step6. 發起SAML調用

參考demo中的com.aliyun.iotx.samldemo.controller.SAMLController#login函數image.png

DEMO說明

DEMO下載地址

https://github.com/aliyun/aliyun-iot-account-samlidp-demo

DEMO啟動說明

Step1. application.properties設置

iot.saml.companyId=X

companyId為IoT平臺建立的公司ID,做SAML認證的相關員工賬戶需要一個管理主體,這個主體就是公司,所以每次做SAML認證時需要攜帶員工所屬手機號+公司ID才能定位到唯一的員工,詳情參見組織管理相關接口,來獲取如何創建及查詢公司。

iot.saml.host=http://localhost

iot.saml.host 為當前應用的域名,該域名會被作為IDP元數據xml的一部分內容,當發起對接流程中的第三部跳轉時,IoT平臺和根據IDP元數據xml中的域名來判斷請求是否合法。

iot.key.password=xxxxxx

iot.key.password即為生成密鑰中使用的${password}參數,為讀取公私鑰的密碼,按需設置。

Step2. client.pem/rsa_aes_private.key替換

將demo中的client.pem/rsa_aes_private.key兩個文件替換為接入流程->密鑰生成中創建的文件

Step3. run SamldemoApplication

運行com.aliyun.iotx.samldemo.SamldemoApplication

FAQ

Q:提示IDP不存在
A:如果SAML對應的元數據未注冊過,請聯系阿里云同學注冊.如果已經注冊過,因為調試或者其他原因修改過SAML對接程序的host,這時候搜索下demo中的assertion.setIssuer(idpBuildIssuer());   這個代碼,確認其返回的結果與注冊元信息中的entityId一致.

Q:提示employee not exist
A:請確保公司下面有該人員(手機號),且該手機號能正常登錄阿里云IOT OC平臺

Q:signature check failed
A:請確保提供的元數據的證書與加簽所使用的私鑰能夠匹配上

Q:org.opensaml.messaging.handler.MessageHandlerException: Message was rejected because it was issued in the future
A:請確保頒發斷言的服務器時間與標準時間是否一致

Q:IOT中心沒有收到免登錄請求
A:因為登錄過程需要由當前域名跳轉到IOT域名下,因此不可使用異步ajax登錄的方式進行登錄.

Q:localhost與127.0.0.1 能混用嗎?
A:不可以,使用localhost或者127.0.0.1注冊IDP時,請訪問對接應用時使用對應的地址或者IP訪問,有refer校驗,當訪問地址不正確時,refer校驗無法通過

Q: refer check failed
A: 同上面問題原因

參考資料

數據格式參考

IDP元數據樣例

該樣例為接入流程->Step2. 生成IDP元數據中生成的數據樣例

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor entityID="http://localhost:8080/saml/idp/metadata" validUntil="2020-02-26T06:42:53.018Z"
                     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
    <md:IDPSSODescriptor WantAuthnRequestsSigned="true"
                         protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>MIICgTCCAeoCCQCuVzyqFgMSyDANBgkqhkiG9w0BAQsFADCBhDELMAkGA1UEBhMCVVMxEzARBgNV
                        BAgMCldhc2hpbmd0b24xEjAQBgNVBAcMCVZhbmNvdXZlcjEdMBsGA1UECgwUU3ByaW5nIFNlY3Vy
                        aXR5IFNBTUwxCzAJBgNVBAsMAnNwMSAwHgYDVQQDDBdzcC5zcHJpbmcuc2VjdXJpdHkuc2FtbDAe
                        Fw0xODA1MTQxNDMwNDRaFw0yODA1MTExNDMwNDRaMIGEMQswCQYDVQQGEwJVUzETMBEGA1UECAwK
                        V2FzaGluZ3RvbjESMBAGA1UEBwwJVmFuY291dmVyMR0wGwYDVQQKDBRTcHJpbmcgU2VjdXJpdHkg
                        U0FNTDELMAkGA1UECwwCc3AxIDAeBgNVBAMMF3NwLnNwcmluZy5zZWN1cml0eS5zYW1sMIGfMA0G
                        CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRu7/EI0BlNzMEBFVAcbx+lLosvzIWU+01dGTY8gBdhMQN
                        YKZ92lMceo2CuVJ66cUURPym3i7nGGzoSnAxAre+0YIM+U0razrWtAUE735bkcqELZkOTZLelaoO
                        ztmWqRbe5OuEmpewH7cx+kNgcVjdctOGy3Q6x+I4qakY/9qhBQIDAQABMA0GCSqGSIb3DQEBCwUA
                        A4GBAAeViTvHOyQopWEiXOfI2Z9eukwrSknDwq/zscR0YxwwqDBMt/QdAODfSwAfnciiYLkmEjlo
                        zWRtOeN+qK7UFgP1bRl5qksrYX5S0z2iGJh0GvonLUt3e20Ssfl5tTEDDnAEUMLfBkyaxEHDRZ/n
                        bTJ7VTeZOSyRoVn5XHhpuJ0B
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                                Location="http://localhost:8080/saml/idp/sso"/>
    </md:IDPSSODescriptor>
</md:EntityDescriptor>

SAML調用數據樣例

該樣例為接入流程->Step6. 發起SAML調用中發起請求的數據樣例

<?xml version="1.0" encoding="utf-8"?>

<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://account.iot.aliyun.test/saml/sp/acs" ID="_5676dfe1f94353c748ad240797e38448" IssueInstant="2019-03-20T03:19:17.165Z" Version="2.0">
  <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://localhost:8888/saml/metadata</saml2:Issuer>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  
    <ds:SignedInfo> 
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>  
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>  
      <ds:Reference URI="#_5676dfe1f94353c748ad240797e38448"> 
        <ds:Transforms> 
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>  
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
        </ds:Transforms>  
        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>  
        <ds:DigestValue>RMAwR0cVg6wgBMpZ3AsDJas08tc=</ds:DigestValue> 
      </ds:Reference> 
    </ds:SignedInfo>  
    <ds:SignatureValue>a9PoPnO5AAteCCZxS5hRFqMtnIIV4XBXcsYITiQf+7YKhGEINruMXp2jJOv+eqq712rZujy295Sx imx66ou5DfjkKRpZsbMw+jKoRZjuLfmOb/F34Z6lAZMU8dFkpltYL+syI70OWmMcvs62WCHrcPGx KLz+enigs7gpJHnEapbJphag2TaWevg85NSWs+gXWR6nrkGB1GuBhjyHBYpD1lFgWofsal87PVM7 R2FSwmHTRoVmmaxCb3sGjiGgUCvtumMktRLOq3LKfxYvfLV89ou05XcZZRqKlSO7p9lRt+AfGB/C RhtOXwtB7fJIK55OyFn51rAtXk+CRtVYGv+R6g==</ds:SignatureValue>  
    <ds:KeyInfo>
      <ds:X509Data>
        <ds:X509Certificate>MIIDMjCCAhoCCQD6lwFKgkPKvDANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJBQTEKMAgGA1UE CAwBQTEKMAgGA1UEBwwBQTEKMAgGA1UECgwBQTEKMAgGA1UECwwBQTEKMAgGA1UEAwwBQTEQMA4G CSqGSIb3DQEJARYBQTAeFw0xOTAyMTcxMjM4MjVaFw0xOTAzMTkxMjM4MjVaMFsxCzAJBgNVBAYT AkFBMQowCAYDVQQIDAFBMQowCAYDVQQHDAFBMQowCAYDVQQKDAFBMQowCAYDVQQLDAFBMQowCAYD VQQDDAFBMRAwDgYJKoZIhvcNAQkBFgFBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA r/Nuy5VN2XqFVyvRm1NFYWLscIuteTILZ0/JkIfU5ZCpr9HziBI5rVYLWUsAt6Pq8Ur1IxTQjRu1 e3O308Oc5rjze0oyDTPUrBJWvJHgwGf16EVNpVCc69BUN4gLzIQqKucRVkUDVS1fTC7L7AhHoMeD o2fb93JlBteH/2TmDKMAatlHjRXOLYUeuXk7M+e72t5wgnHX9t8NpsVZUq84LYD4cQxcMtQua5eP xXV5pdjWjeOFRiBV5dA4b21yNvaO6WByp8pQvGBO0Pi/RVfT+NgzCmDAd+dDRBKDVkLfui9y00b5 Uvz2pD2NrG3j6WU0G4Tnrk28zv0A1TMYg1cqswIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQABvYrL lkI0QfEGxpVXk/B2KBwp9mzuAf9g7W693MXPiSoxZty0OjdPW7DrpZGaSxqoLXf6f9PZtzLdjr+f bvCPwG1liJ+pvDZyK4MCzSUE/SA8vvPbNUDmuoJY44tsCrdmROh1ys4K728pA/oqX3pRMz2jjIeO Xo31ZjADn3r3CGrfX7n37iGPaQqZStepaGw0F0L/hu31yVVWrBDEdgPynMjSxdOzHgvKfwPF74hD nrpC/g3yJhe4KmkKbYdgNXTcSOhTsbhSyldzP/FAG9wx+4iRRXCa8wZnqXiFb2UoiW7SiWmx3tET /OEijFG1aEUJ/R81mI/pw5nyVbYRJldF</ds:X509Certificate>
      </ds:X509Data>
    </ds:KeyInfo>
  </ds:Signature>
  <saml2p:Status>
    <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
  </saml2p:Status>
  <saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_ba4341a4ab83ab70f1e0a755ee8fd8e8" IssueInstant="2019-03-20T03:19:17.165Z" Version="2.0">
    <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://localhost:8888/saml/metadata</saml2:Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  
      <ds:SignedInfo> 
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>  
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>  
        <ds:Reference URI="#_ba4341a4ab83ab70f1e0a755ee8fd8e8"> 
          <ds:Transforms> 
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>  
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
          </ds:Transforms>  
          <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>  
          <ds:DigestValue>hLWddfQ0RKXWZAyuoFkDOMX220w=</ds:DigestValue> 
        </ds:Reference> 
      </ds:SignedInfo>  
      <ds:SignatureValue>YR6u3IGEA1cio8/CgUDq1pLPhNn5Dx4WyA1BMEuOh/63I+m0J2CNJ9yb3PoSHWM4mjJNS6B5UFcb ZYvyLvgriA+cNys53TvIOCFI8W0MSlDEhYM6rw+WNoT6uHK8F+zJ5ehlY9/r3PYxmsC+MYwkFFJ6 SemcbcxvrMVubuVVRAiSq/Z1sSt4VPWjiQc57CSm2r1gVys4k83zvpjwpw6OnB2S68+cgC5unLXL mwiS6+6Kw1wSwR4nWD0RsUKU6bCUYgC9WcC61x7/CMJo0tvAJ+pJiRQG7neXTdSlc+oGS+F0hSp3 yfJ07bjYShffyd7QDSKBRdbC61KXkNTIvhtV3g==</ds:SignatureValue>  
      <ds:KeyInfo>
        <ds:X509Data>
          <ds:X509Certificate>MIIDMjCCAhoCCQD6lwFKgkPKvDANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJBQTEKMAgGA1UE CAwBQTEKMAgGA1UEBwwBQTEKMAgGA1UECgwBQTEKMAgGA1UECwwBQTEKMAgGA1UEAwwBQTEQMA4G CSqGSIb3DQEJARYBQTAeFw0xOTAyMTcxMjM4MjVaFw0xOTAzMTkxMjM4MjVaMFsxCzAJBgNVBAYT AkFBMQowCAYDVQQIDAFBMQowCAYDVQQHDAFBMQowCAYDVQQKDAFBMQowCAYDVQQLDAFBMQowCAYD VQQDDAFBMRAwDgYJKoZIhvcNAQkBFgFBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA r/Nuy5VN2XqFVyvRm1NFYWLscIuteTILZ0/JkIfU5ZCpr9HziBI5rVYLWUsAt6Pq8Ur1IxTQjRu1 e3O308Oc5rjze0oyDTPUrBJWvJHgwGf16EVNpVCc69BUN4gLzIQqKucRVkUDVS1fTC7L7AhHoMeD o2fb93JlBteH/2TmDKMAatlHjRXOLYUeuXk7M+e72t5wgnHX9t8NpsVZUq84LYD4cQxcMtQua5eP xXV5pdjWjeOFRiBV5dA4b21yNvaO6WByp8pQvGBO0Pi/RVfT+NgzCmDAd+dDRBKDVkLfui9y00b5 Uvz2pD2NrG3j6WU0G4Tnrk28zv0A1TMYg1cqswIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQABvYrL lkI0QfEGxpVXk/B2KBwp9mzuAf9g7W693MXPiSoxZty0OjdPW7DrpZGaSxqoLXf6f9PZtzLdjr+f bvCPwG1liJ+pvDZyK4MCzSUE/SA8vvPbNUDmuoJY44tsCrdmROh1ys4K728pA/oqX3pRMz2jjIeO Xo31ZjADn3r3CGrfX7n37iGPaQqZStepaGw0F0L/hu31yVVWrBDEdgPynMjSxdOzHgvKfwPF74hD nrpC/g3yJhe4KmkKbYdgNXTcSOhTsbhSyldzP/FAG9wx+4iRRXCa8wZnqXiFb2UoiW7SiWmx3tET /OEijFG1aEUJ/R81mI/pw5nyVbYRJldF</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </ds:Signature>
    <saml2:Subject>
      <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">16600000000</saml2:NameID>
      <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <saml2:SubjectConfirmationData NotOnOrAfter="2019-03-20T03:24:17.165Z" Recipient="https://account.iot.aliyun.test/saml/sp/acs?id=adsf"/>
      </saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotBefore="2019-03-20T03:19:17.165Z" NotOnOrAfter="2019-03-20T03:19:22.165Z">
      <saml2:AudienceRestriction>
        <saml2:Audience>https://account.iot.aliyun.test/saml/sp/metadata</saml2:Audience>
      </saml2:AudienceRestriction>
    </saml2:Conditions>
    <saml2:AuthnStatement AuthnInstant="2019-03-20T03:19:17.204Z" SessionIndex="_ba4341a4ab83ab70f1e0a755ee8fd8e8">
      <saml2:AuthnContext>
        <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
      </saml2:AuthnContext>
    </saml2:AuthnStatement>
    <saml2:AttributeStatement>
      <saml2:Attribute Name="companyId">
        <saml2:AttributeValue>CompanyID</saml2:AttributeValue>
      </saml2:Attribute>
    </saml2:AttributeStatement>
  </saml2:Assertion>
</saml2p:Response>

站外資源

[1] SAML DEVELOPER TOOLS[EB/OL]. https://www.samltool.com/self_signed_certs.php[2] OASIS標準組織對于 SAML 定義[EB/OL]. https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf[3] 聯合登錄概述[EB/OL]. http://bestwisewords.com/document_detail/93684.html?spm=a2c4g.11186623.6.572.320a4366SUrzHp