2009-07-24 4 views
3

Microsoft AzMan을 사용하는 웹 응용 프로그램을 만들었습니다. 여러 사용자가있을 때까지 제대로 작동합니다. 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는 로그인 할 때 액세스 할 수 없으므로 최고 수준의 액세스 만 유지하는 것이 아닙니다.

답변

1

나는이 질문을 삭제하는 것에 대해 생각했지만, 어리석은 실수로 다른 누군가를 도울 수 있도록 남겨 두는 것이 더 낫다고 생각합니다. AzMan은 여러 사용자간에 액세스 확인 결과를 캐싱하지 않습니다. AddStringSids 메서드는 문제가되지 않습니다. 문제는 내 코드에 있습니다.

나는 클라이언트 컨텍스트에 대한 참조를 보유하고 사용자 요청의 수명이 아닌 응용 프로그램 수명 동안 한 번만 생성되는 정적 변수를 가졌습니다. 이 정적 변수는 첫 번째 사람 - 액세스 - 액세스에 걸리는 원인입니다.

내 사장이 말한 것처럼 바보 같은 프로그래머 실수 또는 SBCK (의장과 키보드 사이의 짧은). ASP.Net에서 비슷한 문제가 발생한다면 변수를 확인하고 정적 변수 문제가 없는지 확인하십시오.

관련 문제