2010-11-23 4 views
1

Silverlight 4 응용 프로그램이 있으며 WCF 서비스와 통신합니다. 사용자는 WCF 서비스에 액세스하려면 사인온해야합니다.Silverlight 4에 사용자 로그인 저장

이제 Silverlight 앱을 시작할 때마다 사용자 이름과 비밀번호를 다시 입력하지 못하게하고 싶습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? 사용자 이름/(해쉬 된) 비밀번호를 저장하기 위해 쿠키를 생각했지만 쿠키가 유니 코드를 처리 할 수 ​​없으며 비밀번호가 유니 코드로 저장됩니다.

무엇을 제안하겠습니까? 사전에

감사합니다,
프랭크

답변

2

그럼 당신은 처음 로그인 한 후 같은 몇 가지 일을 격리 된 저장소에 암호화 된 형식의 자격 증명을 저장할 수 있습니다. SL이 풀업을 시작하면이를 서비스에 전달하여 유효성을 확인한 다음 로그인합니다.

+0

좋은 옵션 인 것 같습니다. 감사합니다. – Aaginor

0

이것은 Silverlight 앱이므로 ASP.NET에서 인증을 처리하지 않는 이유는 무엇입니까? 인증 된 사용자와 만 작업 할 수 있도록 WCF 서비스의 보안을 유지할 수 있습니다. Here's an excellent article on the subject.

편집

이 글에서 저자는 사용자 이름/암호를 지정 메시지 헤더를 추가하는 언급해야한다. 방금 로직을 HttpContext.Current.User이 인증되었는지 확인하고, 그렇다면 서비스에 대한 액세스를 허용합니다.

1

또 다른 방법은 GUID (사용 가능한 경우)를 저장하는 것입니다.

는 예를 들어, 데이터베이스 스키마는

user_id (UniqueIdentifier, primary key) 
username (varchar) 
password_hash (varchar) 
password_salt (varchar) 

가 그럼 난 IsolatedStorage에서 user_idusername를 저장하는 것 ... 이런 식으로 뭔가를 보인다. 사용자가 이러한 변수를 반환하면 인증을 위해 WCF 서비스의 특수 함수로 전달됩니다.

그리고 user_id가 사용자에게 표시되지 않는 한, 이는 암호를 손상시킬 수있는 안전한 방법 일 수 있습니다. 그런데 원래 OpenID를 사용하는 사이트에 대해이 아이디어를 생각해 냈습니다. 따라서 암호가 없습니다.

+0

사용자 암호 (SHA256)를 해시하므로 고유 식별자가 필요한 이유는 무엇입니까? 공격자가 해시 된 PW와 GUID를 얻는 데 아무런 차이가 없음을 알 수 있습니다. 두 정보를 통해 그녀는 응용 프로그램에 액세스 할 수 있으며 둘 다 그녀는 사용자가 사용하는 암호를 알 수 없거나 잘못 되었습니까? – Aaginor

+0

보안상의 차이는 없으며 단지 다른 방법 일뿐입니다. –

관련 문제