私は、SSO Shibboleth 認証で保護された Web サイトと強く対話する必要がある Android プロジェクトに取り組んでいます。したがって、有効な SAML アサーションを作成して Web サイトにログインするには、Java クラスを作成する必要があります。
私はたくさんグーグルで検索しましたが、このコードを見つけました: http://blog.keksrolle.de/2010/07/27/how-to-create-a-valid-saml-2-0-assertion-with-opensaml -for-java.html 実際、いくつかの HttpConnection リクエストを介して SAML レスポンスを取得できたため、これは必要ないことがわかりました。
私が書いたコードは、次のリストの手順 1 ~ 5 を実行できまし た。要素の。次に、アサーション コンシューマ サービスに POST 要求を発行します。ここで疑似コード:
/* discover the IdP */
connect to the link (/idp/login/) which redirects to the form page (/Authn/UserPassword)
get cookies from the link in order to gain access to the form page
/* end */
/* get SAML response climbing the redirects */
set goTo var to the link of the form page
do {
send POST data (+ cookies) to the goTo page
get cookies of the new page and saves them with the others
set goTo to connection.getHeaderField("Location");
} while (!(responseCode==200));
read the source of the last redirect
get the specific SAMLResponse
/* end */
send it to website.com/Shibboleth.sso/SAML2/POST
get cookies, session data
しかしその後、サーバーの応答は 500 エラー コード、またはページ上のエラー コード (「問題が発生しました。再試行してください」) です。実際、サーバーに送信 (エンコード) した有効な SAML アサーションがある場合でも、セッションにアクセスできません。セッションの問題ですか?POST リクエストを発行したら、サーバーが Cookie (JSESSIONID) とクエリ文字列 (/home.do;jsessionid=XXXFAEC60AXXX7A7B9XXXAA9EXXXE71X.jvm2c) を介して私を再認識したと思いましたが、何かが完全に間違っていたのではないかと思います。
Java 経由で SAML 認証された Web サイトにログインするにはどうすればよいですか?
別の (わずかな) 問題: 暗号化 (https) なしですべての要求を実行しました。これはセキュリティの観点から問題になる可能性がありますか (パケット スニッフィングなど)?