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レスポンスを取得しようとするのではない)ので、これは驚きではありません。