2016-07-29 16 views
3

SAMO2を介した認証にWSO2 ISを使用するサービスプロバイダを設定しようとしています。ここで、ユーザがサービスプロバイダにアクセスする必要のあるマシン(つまり外部プログラム)であるユースケースを確認します。ユーザーはマシンなので、ブラウザーはなく、認証ステップを完了するためにWSO2ログインフォームを使用することはできませんが、まだユーザーであるためユーザー名とパスワードが与えられています。ブラウザなしでWSO2 Identity Serverに対して認証し、SAML2アサーションメッセージを取得

私の質問は、この非GUIユーザーがSAML2ワークフロー(具体的には、SAMLV2アサーションメッセージを取得するためにWSO2への資格情報を渡す)に参加し、サービスプロバイダにアクセスする方法です。

は、私は、シミュレーションとして、以下を実行しようとしましたが、私は

1) curl -v -k http://localhost:8000/service_provider/login 
2) Extracting the SAML message from the response: 
    curl --user username:password -v -k https://localhost:9443/samlsso?SAMLRequest=<ENCODED_REQUEST> 

は基本的に、私は戻ってSAMLアサーションのメッセージとサービスプロバイダへのWSO2からリダイレクト応答を得るために期待していたが、代わりに私が得た失敗しました次のようになります。 https://localhost:9443/authenticationendpoint/login.do;jsessionid=7QON18982323HWIH?commonAuthCallerPath=%2Fsamlsso&forceAuth=false&passiveAuth=false&tenantDomain=carbon.super&sessionDataKey=122JhQ-JQOJ-H8123&relyingParty=test-saml2&type=samlsso&sp=test&isSaaSApp=false&authenticators=BasicAuthenticator:LOCALこれは、人間のユーザーがブラウザを使用して認証するときに使用される同じURLです。

また、この記事で提案されているように、 "sectoken"フォームのparamを使用してHTTP-POSTバインディングを試してみました:http://xacmlinfo.org/2015/02/12/sso-without-identity-provider-login-page/。しかし、それはどちらもうまくいかなかった。

また、WSO2のAuthenticationAdminHttpsSoap12Endpointサービス(具体的には「ログイン」メソッド)へのSOAP要求を試みました。上記の手順にSOAP応答から得たJSESSIONIDを使用しましたが、効果は同じでした。 WSO2はJSESSIONIDを使ってあなたがすでに認証されているかどうかをチェックしません(少なくともSAMLレスポンスを取得しようとするのではない)ので、これは驚きではありません。

答えて

0
1.Get login form 

Request 
curl -v http://localhost:8000/service_provider/login 

Response 
Extract SAMLRequest and SSOAuthSessionID (if RelayState presents extract it too) 

2.Send saml request to IDP using extracted valuses in step1(In browser this will happen through redirection) 

Request 
Endpoint : https://<is_host>:9443/samlsso 
Verb :post 
Content-Type:application/x-www-form-urlencoded 
Parameters:[ 
SAMLRequest:<value from previous step>, 
SSOAuthSessionID:<value from previous step>, 
RelayState :<value from previous step>] 

Response 
This will give IS login page.Extract sessionDataKey from that. 

3. Login by providing user name password 

Reqeust 
Endpoint:https://<is_host>:9443/commonauth 
Content-Type:application/x-www-form-urlencoded 
Verb :post 
Parameters: [tocommonauth:true,username:xxxx,password:xxx,sessionDataKey:<extracted from previous step>] 

Response 
Extract SAML response 

5.Post the saml resposne to ACS url of service provider