0

私は、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) なしですべての要求を実行しました。これはセキュリティの観点から問題になる可能性がありますか (パケット スニッフィングなど)?

4

1 に答える 1

0

残念ながら、あなたの正確な問題が何であるかを想像することはできません。Shibbolethのワークフローに関して説明できるShibboleth の Web ページにリダイレクトすることしかできません。SAML プロファイルのドキュメントもあります (14 ページの WB-SSO)。シングル ログアウト プロファイルを使用してアプリケーションを拡張する際に役立つことがわかりました

https がないことについては... これは重大なセキュリティ リークです。Shibbolethh または WBSSO を使用する目的は、リソースと信頼できるユーザー情報の両方を最大限に保護することです。まず、IdP との安全なログイン資格情報交換が必要です。第 2 に、idp がアプリケーションに送り返す署名済み (および場合によっては暗号化された) アサーションを誰かが盗聴した場合、(暗号化のために) そこからユーザー情報を取得できない可能性がありますが、アサーションが続く限り、保護されたサービスにアクセスできます。有効です (5 分、15 分、または数時間 - IdP 構成によって異なります)

編集 1: サンプル コードについては、Guanxi (Java での Shibboleth 実装) を確認してください。

于 2013-03-08T10:46:37.860 に答える