簡體   English   中英

基於SAML令牌的身份驗證,可從JAVA / J2ee應用程序使用共享點2013其余Web服務

[英]SAML token based authentication for consuming share point 2013 rest web services from JAVA/J2ee application

我有一個使用SP Web服務的Java / J2EE Web應用程序,但最近由於身份驗證被破壞,SP站點已遷移到2013並部署在雲/辦公室0365中。 SP人員建議將身份驗證機制更改為基於SAML令牌的身份驗證,並使用Microsoft Azure AD。 因此,我將應用程序登上Azure並收到了客戶端ID,授權,可以使用它生成安全令牌(用於adal4j java api)。 現在,我需要完成以下2個步驟,以完成Office 0365中的身份驗證過程以訪問SP 2013 Web服務。

  1. 獲取訪問令牌cookie
  2. 獲取請求摘要令牌

但是找不到上述2個步驟的任何基於Java的API。 參考以下教程,但它與aps / .net相關

http://paulryan.com.au/2014/spo-remote-authentication-rest/

請幫助我提供相同的示例代碼庫。

感謝您的支持

因此,您是否使用了Java的Microsoft Azure Active Directory身份驗證庫(ADAL)

在這種情況下,請查看AAD Java示例

您需要使用Web API的應用程序。

按我的經驗,我認為你可以嘗試直接按照你refered 文章一步使用步驟的Apache HttpClient的構造要求。

例如,下面的代碼使用HttpClient使用xml主體執行發布請求以獲取安全性令牌。

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://login.microsoftonline.com/extSTS.srf");
String xmlBody = "...";
InputStreamEntity reqEntity = new InputStreamEntity(
                    new ByteArrayInputStream(xmlBody.getBytes(), -1, ContentType.APPLICATION_OCTET_STREAM);
            reqEntity.setChunked(true);
httpPost.addHeader("Accept", "application/json; odata=verbose")
httpPost.setEntity(reqEntity);
CloseableHttpResponse response = httpclient.execute(httppost);
String respXmlBody = EntityUtils.toString(response.getEntity());
//Parse the respXmlBody and extract the security token

您可以嘗試按照上面的代碼通過對URL https://yourdomain.sharepoint.com/_forms/default.aspx?wa=wsignin1.0的安全令牌主體進行帶有安全令牌主體的發布請求來獲取包含訪問令牌的響應。並使用代碼Header[] hs = response.getHeaders("Set-Cookie"); 獲取Set-Cookie標頭數組作為訪問令牌。

然后使用它們設置兩個標頭Cookie以獲取請求摘要令牌,並解析響應主體以提取FormDigestValue作為請求摘要令牌。

暫無
暫無

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

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