2014-12-27 4 views
1

방금 ​​wcf 서비스를 시작하여 내 서비스를 사용하는 웹 응용 프로그램을 빌드했습니다. 내가 토큰을 토대로 모든 요청에서 토큰을 통과시킨 다음 데이터베이스의 각 요청에서 해당 토큰이 유효한지 여부를 확인합니다. 나는 이것이 DB에 매번 추가 요청을 보내는 것이 좋지 않다고 생각한다. 그래서, 그가 처음 로그인 할 때 또는 사용자가 서비스를 요청할 때 처음으로 사용자를 인증 할 수 있습니까? 그런 다음 세션이 모두 토큰으로 작동 할 때까지 계속 로그인 할 수 있습니까?인증 토큰을 wcf에 한 번 전달하십시오.

나는 Google에서 검색했지만 모든 사람이 서비스 인증 방법을 알려주고있었습니다.

+0

토큰의 어떤 종류의 당신이 서비스에 통과 할 더 통찰력을위한

점검이 SO 답변? – khlr

+0

사용자 생성시에 – Ancient

답변

0

임의의 문자열을 생성하고 데이터베이스를 체크인해야하는 대신 많은 인증 모듈처럼 암호화 및/또는 서명을 토큰으로 사용하십시오.

즉, 사용자/응용 프로그램 이름에서 토큰을 작성하고 날짜 및/또는 만료 날짜를 발급하고 암호화 한 다음 유효성 검사를 위해 데이터베이스 조회가 필요없는 자체 토큰을 갖습니다. 쉽게 암호화

MachineKey

http://msdn.microsoft.com/en-us/library/system.web.security.machinekey%28v=vs.110%29.aspx

보조 노트를 사용할 수 있습니다 -이 어떻게 폼 인증/세션 인증 모듈 작품이다. 인증 정보를 가지고있는 쿠키 (토큰)가 있습니다. 당신은 이것들로 전환하는 것을 고려할 수 있습니다.

편집 : 당신에 대해 물어 예 : 각 요청에 데이터베이스와 인증 토큰을 확인

// create token 
string username = "foo"; 
string token = Convert.ToBase64String(MachineKey.Protect( 
        Encoding.UTF8.GetBytes(username))); 

// get username out of token 
string token = ....; 
string username = Encoding.UTF8.GetString(MachineKey.Unprotect( 
        Convert.FromBase64String(token))); 
+0

예제를 넣을 수있는 임의의 문자열이 생성되었습니다. 이해할 수 없었습니다. – Ancient

+0

자신의 토큰을 디자인하는 방법에 대한 아이디어를 얻을 수있는 기본적인 예제로 내 대답을 편집했습니다. –

+0

토큰을 가져온 후에는 어떻게해야합니까?이 상황에서 내 데이터베이스를 호출해야하는 경우에도 내 서비스를 사용해야하는 실제 클라이언트인지 확인할 수 있습니다. 그럼 어떻게해야할까요? – Ancient

0

아마 좋은 생각이다. 일반적으로 토큰으로 사용되는 것은 현재 사용자 원칙이지만 직렬화되고 암호화됩니다. 로그인시 토큰이 생성되어 클라이언트에 반환됩니다. 그런 다음 각 요청에 대해 서비스 토큰을 전달하면 역 직렬화 할 수있는 기회가 주어지고 DB에 왕복하지 않고 System.Threading.Thread.CurrentPrincipal을 채 웁니다.

  1. Delivering a JWT SecurityToken to a WCF client
  2. How to use Microsoft JWT Token Handler to secure webHttpBinding based WCF service