私は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にこのトークンを強制的に処分できる方法はありますか?
ありがとうございます!
このシナリオでは、ACSはクッキーにトークンを保存しません。唯一のクッキーはADFSとあなたのRPです。ドメインに参加しているマシンであれば、自動的にログインするようにADFSが設定されている可能性があります。もともとユーザー名/パスワードを使用してログインする必要があったか、プライベートブラウザウィンドウを使用して自動ログインするかどうかを確認できますか? –
Oren、私は最初にログインしなければならないことを確認します。私のマシンはそのドメインにはありません。プライベートブラウザのウィンドウでも同じ動作です。そして私は、ADFSとRPの間のトークンが処分されていないと考えています。お手伝いをしたい場合は、あなたのtwitter/fb/e-mailをお知らせください。私はあなたにURLとADのアカウントを送ってくれます。また、ソースを共有することもできます。 –
UPDATE:Facebookであなたを見つけ、資格情報とURLを共有しました。ソースが必要な場合はお知らせください。 –