Microsoft AzMan を使用する Web アプリケーションを作成しましたが、複数のユーザーがいるまで問題なく動作します。私は、AzMan が複数のユーザーに対して同じものをキャッシュしていることをほぼ 100% 確信しています。
少し簡単にするために、私が見ている問題は、ユーザー A がサイトにアクセスしてフル アクセス権を持っていることです。ユーザーは正しいアクセス権を付与され、問題なく作業できます。次に、ユーザー B はサイトにアクセスし、表示アクセス権しかありませんが、AzMan は既にユーザー A のフル アクセス権を認識しているため、ユーザー B にもフル アクセス権を付与します。
クライアント コンテキストを作成するときに AddStringSids メソッドを使用しています。これは、あらゆる状況で機能する唯一のメソッドだからです。これに問題はありますか?トークンからクライアント コンテキストを作成していたときは、この問題はありませんでした。
以下は、コンテキストを作成するために使用している正確なコードです。app は IAzApplication2 変数であり、ClientContext.SID は問題のユーザーの SecurityIdentifier です。
IAzClientContext2 cctx = app.InitializeClientContext2("AppNameHere", null);
cctx.AddStringSids(new object[] { (object)ClientContext.SID.ToString() } as object);
EDIT:アプリケーションがロールを認識する必要があるため、ASP.Netロールプロバイダーはまったく使用していません。COM API のみを使用しています。
編集 2: また、ユーザー B が最初にログインした場合、ユーザー A はログイン時にアクセスできません。したがって、最高レベルのアクセスを維持しているだけではありません。