WebAPI를 사용하고 Katana와 함께 호스팅하고 있습니다. 지금 인증과 권한 부여에 사용될 미들웨어를 작성 중입니다. 요청은 다양한 플랫폼에서 이루어질 수 있으므로 SSL을 통한 기본 인증을 사용해야합니다. OAuth는 현재로서는 옵션이 아닙니다. 미들웨어는 기본 인증에서 제공 한 사용자 이름과 암호를 가져 와서 사용자가 로컬 Windows 그룹의 구성원인지 확인해야합니다.사용자 이름과 암호로 WindowsPrincipal을 얻는 방법
지금 당장 WindowsPrincipal을 만드는 방법을 알아 내려고 노력 중입니다. 사용자 이름과 암호로 WindowsPrincipal을 만드는 방법을 파악할 수 있다면 나머지 작업 방법을 알고 있습니다. 여기 내가 지금 가지고있는 것이있다.
//TODO
WindowsPrincipal userPrincipal = null; //This is where I need to take the username and password and create a WindowsPrincipal
Thread.CurrentPrincipal = userPrincipal;
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
PrincipalPermission permission = new PrincipalPermission(null, "Local Group Name");
permission.Demand();
회원이 특정 그룹에 속해 있는지 확인하기 위해 사용자 이름과 비밀번호를 사용하는 좋은 방법을 찾기 위해 고심하고 있습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사전에 도움을 주셔서 감사합니다.
그런데을 수행 할 수 있습니다 장군 WindowsIdentity에서 빠져 나오십시오. WindowsPrincipal principal = 새 WindowsPrincipal (신원); – pysco68
매력처럼 작동합니다. 도와 주셔서 감사합니다! 이 접근 방식에 대한 마지막 질문입니다. 관리 코드에서 원시 코드를 호출하는 데 많은 경험이 없으며 모든 관리되지 않는 리소스를 정리해야합니다. kernel32.dll에서 CloseHandle()을 사용하면 userToken에 대한 핸들을 닫아야합니다. 제가 놓친 원주민 전화와 관련하여 정리해야 할 것이 있습니까? –
사실 사용자 토큰이 더 이상 필요하지 않으면 실제로 다른 작업을 수행하지 않아도 CloseHandle()을 호출 할 수 있습니다. 필자는 WindowsIdentity의 수명이 토큰의 수명과 관련이 없다고 생각하지만, 직접 사용해 보시기 바랍니다! – pysco68