簡體   English   中英

SAML - 解析服務提供者元數據並提取詳細信息,例如簽名證書和斷言消費者端點

[英]SAML - Parse Service Provider Metadata and extract details such as signing certificate and assertion consumer endpoint

我的應用程序充當 SAML IdP。 為此,我正在向我的應用程序注冊服務提供商。 為此,我連接到 SP 聯合元數據 URL 並下載 XML。

問題是 - 是否有任何現成的 Java 庫可以執行此任務? 或者我是否需要使用標准 DOM API 手動提取詳細信息?

注意:我的應用程序維護用戶存儲庫及其身份驗證和授權詳細信息,例如憑據、角色、操作等。因此不能真正依賴第三方 IdP,例如 ADFS 或 OneLogin。

任何幫助深表感謝。

感謝 codebrane 的指點。 我已經找到了使用 opensaml 庫的方法。

 private void init(String metadata) throws Exception {
       // parse metadata XML
        EntityDescriptorImpl entityDescriptor = parseMetaData(metadata);

        SPSSODescriptor spssoDescriptor = entityDescriptor.getSPSSODescriptor(SAMLConstants.SAML20P_NS);

        // get signing/encryption certificates
        List<KeyDescriptor> keyDescriptors = spssoDescriptor.getKeyDescriptors();
        for (KeyDescriptor keyDescriptor: keyDescriptors) {
            KeyInfo keyInfo = keyDescriptor.getKeyInfo();
            X509Certificate samlCertificate = keyInfo.getX509Datas().get(0).getX509Certificates().get(0);
            sigVerificationCertificate = KeyInfoSupport.getCertificate(samlCertificate);
        }

        // get SAML endpoints
        assertionConsumerServices = spssoDescriptor.getAssertionConsumerServices();
        singleLogoutServices = spssoDescriptor.getSingleLogoutServices();

        // TODO - extract organization name etc.
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM