2013-03-13 4 views
5

私はMVS 4アプリケーションでACS 2.0を使用しています。Azure ACSを使用しているときにActive Directoryからサインアウトできない

既にサインイン用に設定されており、ADFSなどのさまざまなプロバイダで使用できます。 サインアウト機能を実装する必要があります。 this questionとして

はすでに古くなって、私はthese samplesからコードを使用:ここで

は、それがどのように見えるかです:結果

// Load Identity Configuration 
    FederationConfiguration config = FederatedAuthentication.FederationConfiguration; 

    // Get wtrealm from WsFederationConfiguation Section 
    string wtrealm = config.WsFederationConfiguration.Realm; 
    string wreply = wtrealm; //return url 

    // Read the ACS Ws-Federation endpoint from web.Config 
    string wsFederationEndpoint = ConfigurationManager.AppSettings["ida:Issuer"]; 

    SignOutRequestMessage signoutRequestMessage = new SignOutRequestMessage(new Uri(wsFederationEndpoint)); 

    signoutRequestMessage.Parameters.Add("wreply", wreply); 
    signoutRequestMessage.Parameters.Add("wtrealm", wtrealm); 

    FederatedAuthentication.SessionAuthenticationModule.SignOut(); 

    var signoutUrl = signoutRequestMessage.WriteQueryString(); 

、私はリダイレクトする必要がありサインアウトURLを取得します、それはトークンを処分し、私を返すでしょう。 URLは次のようになります。

https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wreply=http%3a%2f%2flocalhost%3a61192%2f&wtrealm=http%3a%2f%2flocalhost%3a61192%2f 

結果として、Google、Yahoo、およびMicrosoftアカウントでは正常に動作します。 サインアウトして保護されたエリアにアクセスしようとすると、アイデンティティプロバイダのリストが表示されます。同じプロバイダを選択しても、再度サインインする必要があります。

しかし、私はADFSプロバイダを使用する場合、それはそのように動作します:

  • 私は再び

  • ADFSプロバイダを選択し、サインアウトして使用可能なプロバイダのページ

  • に着くIをクリックしてください

  • 唯一のプロバイダとしてADFSを使用している場合、手順2 f上記のROMはスキップされ、 私は常にユーザーを変更する機能がなければサインインし続けます。

私は何が起こるか分かりませんが、ACSはADFSから取得したセキュリティトークンを破棄せずに再使用します。

ACSにこのトークンを強制的に処分できる方法はありますか?

ありがとうございます!

+1

このシナリオでは、ACSはクッキーにトークンを保存しません。唯一のクッキーはADFSとあなたのRPです。ドメインに参加しているマシンであれば、自動的にログインするようにADFSが設定されている可能性があります。もともとユーザー名/パスワードを使用してログインする必要があったか、プライベートブラウザウィンドウを使用して自動ログインするかどうかを確認できますか? –

+0

Oren、私は最初にログインしなければならないことを確認します。私のマシンはそのドメインにはありません。プライベートブラウザのウィンドウでも同じ動作です。そして私は、ADFSとRPの間のトークンが処分されていないと考えています。お手伝いをしたい場合は、あなたのtwitter/fb/e-mailをお知らせください。私はあなたにURLとADのアカウントを送ってくれます。また、ソースを共有することもできます。 –

+0

UPDATE:Facebookであなたを見つけ、資格情報とURLを共有しました。ソースが必要な場合はお知らせください。 –

答えて

0

+1 @ oren-melzerの答え:ブラウザはhttpの基本認証情報をキャッシュし、自動的に再送信します。フォームのauth(クッキーを使用する)またはログアウト時に移動するか、ブラウザのauthヘッダーを拒否して、常に401を返します。この「有効な資格情報を返す」401がブラウザをクリアする場合があります。 。