3

SAML2 Service Provider Web アプリケーションを .NET MVC でビルドします (3)。認証には、Shibboleth SPではなく、 ComponentSpace の SAML2 ライブラリを使用しています。関連するコントローラーロジックは次のとおりです。

public class SignOnController : Controller
{
    // constructor-inject _services

    [HttpPost]
    public ActionResult SendAuthnRequest(string userName, string returnUrl)
    {
        // this users ComponentSpace internally to push user to IdP
        _services.SamlServiceProvider.SendAuthnRequest(args);
        return new EmptyResult();
    }

    [HttpPost]
    public ActionResult ReceiveAuthnResponse()
    {
        var samlResponse = _services.SamleServiceProvider
            .ReceiveSamlResponse(args);
        // ...
        return Redirect(samlResponse.RelayResourceUrl ?? defaultUrl);
    }
}

最終的に、ユーザーはリレー URL またはデフォルトのログイン ページに到達します。ただし、リンクをクリックして [戻る] ボタンをクリックすると、ブラウザーは Shibboleth IdP サーバーのエラー ページに戻ります。その後、ブラウザの進むボタンと戻るボタンは最終的に役に立たなくなります。

上記の方法のいずれかで何か間違っていますか? 送信時に EmptyResult() ではなく View() を返す必要がありますか? IdP へのポストバックが繰り返されるのを防ぐためにブラウザの履歴をリセットする方法はありますか? これは、ComponentSpace の実装で構成できるものですか?

4

4 に答える 4

0

IdP i WBSSO SAML2 プロファイルで認証中に戻るボタンを押したということですね。あなたが列挙したコンポーネントはわかりませんが、Shibboleth の場合、常にエラー ページで終了します。私が間違っているかもしれませんが、SP->IdP 通信の性質を考えると、何かを再実装しない限り、他に選択肢はないと思います。

于 2012-07-20T09:41:12.010 に答える
0

ブラウザー経由で送信される SAML SSO で使用される SAML プロトコル メッセージ。これまで見てきたように、SAML SSO を使用している場合、ブラウザーの前後のナビゲーション ボタンをクリックすると問題が発生する可能性があります。

この問題に対する簡単な解決策はありません。Javascript を組み込んでナビゲーション ボタンを無効にすることもできますが、他の問題が発生する可能性が高くなります。

これが発生した場合、最も簡単な解決策は一般的なエラー メッセージを表示することだと思います。これは、アプリケーションで行う必要があることです。

出荷される MvcExampleIdentityProvider および MvcExampleServiceProvider アプリケーションには、ほとんどの場合、問題はありません。質問で使用されている SAML 低レベル API とは対照的に、SAML 高レベル API を使用していますが、これは違いはありません。この例では、EmptyResult も返します。

于 2015-05-09T02:05:18.920 に答える