2016-07-11 10 views
0

몇 가지 자습서를 통해 IdentityServer3 문제/핸들 토큰을 사용하여 일부 웹 API 끝점에 대한 액세스 권한 부여에 사용할 수 있는지 확인하려고합니다.IdentityServer3 - 클라이언트 및 비밀 번호

내가 이해하지 못하는 개념 중 하나는 ClientSecret입니다. 이전 프로젝트에서 OAuth를 사용할 때 헤더에 client 또는 secret 값을 전달할 필요가 없었습니다. 나는 grant_type, usernamepassword만을 통과 시켰습니다. 그러나 IdentityServer는 grant_type, usernamepassword과 함께 clientsecret을 기대합니다.

client이 필요한 이유는 무엇입니까? IdentityServer가 클라이언트의 유형에 관계없이 전달 토큰을 그냥 돌려 보내면 안됩니까? 또한 secret 매개 변수의 용도는 무엇입니까? 이것은 JWT 토큰의 서명을 만드는 데 사용됩니까?

답변

4

client_idclient_secretpart of the OAuth spec이며 Identity Server 고유의 구현은 아닙니다. 그것들은 요청자가 요청 된 흐름과 범위를 사용하여 액세스 토큰을받을 권한이 있는지 확인하기 위해 액세스 제어 목록으로 생각하는 클라이언트 등록의 일부입니다.

등록되지 않은 클라이언트는 supported in the OAuth 사양이지만 아직 발생하지 않았습니다. 당신이 passwordgrant_type, client_id, client_secret, 여러 scope의, usernamepassword를 필요로하는 ResourceOwner 흐름을 사용하고있다 그것의 소리에서

.

client_idclient_secret은체계를 사용하여 Authorization 헤더로 전송 된 base64로 인코딩되고 전달 될 수 있습니다.

비밀은 JWT 유효성 검사에 사용되지 않으며 들어오는 클라이언트를 확인하는 데만 사용됩니다.

+0

Scott! 나는 당신의 튜토리얼을 읽고있다. 그것들은 잘 배치되어 있습니다. IdentityServer3을 사용하여 베어러 토큰을 얻는 방법을 알아 내려고 애쓰는 데 어려움을 겪고 있습니다. 그러면 클레임 속성으로 API를 보호 할 수 있습니다. – webworm