Microsoft AzManを使用するWebアプリケーションを作成しましたが、複数のユーザーがいるまでうまく動作します。私はAzManが複数のユーザーに対して同じものをキャッシュしていることをほぼ100%確信しています。AzManアクセスチェックキャッシュを更新するには?
少し単純化すると、私が見ている問題は、ユーザー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のみを使用しています。
EDIT 2:また、ユーザーBが最初にログインした場合、ユーザーAはログインしたときにアクセス権を持たないため、最高レベルのアクセスを維持するだけではありません。