11

나는 asp.net 웹 API를 사용하여 나머지 서비스를 만들려고 노력하고 있으며 모든 것이 잘 작동하지만 이제 인증으로 무엇을해야 하는지를 알게되었습니다.ASP.NET 웹 API (REST) ​​: 사용자 자격 증명 또는 토큰을 사용하여 인증 하시겠습니까? "새 사용자 등록"자원 암호를 무료로 두십시오.

나는 어디서부터 시작해야 할 지 혼란 스럽다. 여기서 내가 생각해 왔던 것이있다.

나는 나머지 리소스로 구성되어 있으며, 각 리소스에는 사용자가 등록되어 있어야하므로 이렇게하는 것이 가장 좋습니다. 내가

AuthorizationFilterAttribute

나는 적어도 그것을하지만 암호화해야을 사용하여 서버에 인증 할 수 있도록 그냥 서비스에 대한 각 호출에 헤더에 사용자 이름과 비밀번호를 전송해야 하는가? 나는 정말로 다른 사람들이하고있는 일을 알고 싶다. 토큰을 만드는 개념이 있다는 것을 알고있다. (나는 짧은 삶을 살 것이라고 추정한다.) 그래서 사용자는 인증을하고 토큰을 받게 될 것이다. 그 서비스에 대한 추가 호출. 토큰은 내가 살았을 때 단명해야 할 것 같은데? 그러면 토큰이 만료되었을 때 어떻게 문제를 처리 할 수 ​​있습니까?

또한 새로운 사용자를 등록하는 데 사용되는 리소스가 있습니다. 사실 내 클라이언트 (Android, iphone) 만 호출 할 수 있습니다. 그래서 나는 아무 인증 방법도 남겨 두거나 하드 코딩 된 암호 또는 이와 비슷한 것을 넣어 적어도 다른 사용자가 새로운 사용자를 등록 할 수 있도록해야합니까? 서비스는 인터넷에서 공개 될 것입니다.

나는이 모든 의견에 정말로 감사 할 것입니다.

이 작업을 수행하는 올바른 방법을 찾을 수없는 것처럼 보입니다. 서비스를 완전히 리팩터링 할 필요가 없으므로 처음부터 올바르게 시도하고 싶습니다. 사전

답변

11

에서

감사는 다음 링크는 어떤 재치있는 DIY 옵션 http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/ 다루 나타납니다. "공용/개인 키 기반 토큰"섹션에서는 과거에 효과적으로 사용한 방법을 다루고 있으며 도움이 될 것입니다.

http://identityserver.codeplex.com/ Thinktecture IdentityServer와 OAuth 베어러 토큰 ("Resource Owner Password Credential"부여 유형)을 사용하고 있지만 ... 나는이 코드와 예제를 사용하여 클라이언트가 토큰을 얻고 WebApi를 호출합니다.

정말 등록 화면을 보호해야한다면 장치에 설치된 클라이언트 인증서를 사용하여 인증을받을 수 있습니다 ... 다시 Thinktecture 서비스가 여기에 도움이 될 수 있습니다 https://identity.thinktecture.com/idsrv/docs/default.htm?RequestingatokenusingOAuth2.html. 등록 프로세스가 안전하다면 What are best practices for activation/registration/password-reset links in emails with nonce 예. 이메일 확인 및 활성화 등 공개적으로 액세스 가능하게 유지하는 것이 안전 할 수 있습니다. 이는 모두 비즈니스 요구 사항 및 원하는 가입 절차에 따라 다릅니다.

적어도 전송 수준 보안 SSL을 사용해야하지만 메시지 수준 보안을 제안 할 때와 같이 사용해야합니다. 모든 토큰을 암호화하는 것이 좋습니다. OAuth 사양에는 http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#mitigation에 대한 내용이 있습니다.

만료 토큰에 대해서는 암호 변경 정책과 동일한 빈도로 토큰이 만료되는 경향이 있습니다. (토큰 절도의 영향을 최소화하기 위해) 유효 시간을 줄이는 것이 중요하며 요구 사항과의 균형을 고려해야합니다.OAuth는 새로 고침 토큰 Why Does OAuth v2 Have Both Access and Refresh Tokens?에 대한 토론을하고 있으며이 주제와 관련하여 링크를 사용하고 있습니다. 현재 사용하고있는 ID 서버가 현재이를 지원하지 않기 때문에 현재이 방법을 사용하지 않습니다.

토큰을 안전하게 유지하는 것도 고려 사항입니다. 우리는 IOS에서 KeyChain을 사용하고 있지만이 토큰이나 암호가 도난 당할 수있는 장치 인 것처럼 가능한 경우 모바일 장치 관리 정책에 대해 생각하고 감옥 탐지, 잠금 화면 적용 등을 조사합니다.

+0

Thanks Mark, 나는 이것들을 보게 될 것이다. 나는 이걸 좀 봐 주었다 .. 모든 도움을 주셔서 감사합니다. – Martin