2016-07-20 4 views
1

저는 Oauth를 처음 접했지만 Java에서 REST 요청을 인증 할 수있는 방법을 배워야합니다. 여기에 내가 지금까지 가지고있는 것이있다.Oauth1.0a 서명을 생성하는 자바 라이브러리

약간의 독서 후에, 나는 ScribeJava을 시도하기로 결정했다. DefaultApi10a을 구현하고 끝점을 가리키는 맞춤 API를 만들었습니다. 나는 이렇게 서비스를 설치했다 :

final OAuth10aService service = new ServiceBuilder() 
     .apiKey("key") 
     .apiSecret("secret") 
     .build(TestApi.instance()); 

이것은 작동하지 않았다. 발굴 작업을 한 후에는 자체 서명 된 인증서를 사용하기 때문에 원격 호스트에 연결할 수없는 것으로 보입니다. 원격 서비스에 연결하는 중에 문제가 있음을 알리는 오류가 발생했습니다. ScribeJava는 자체 서명 된 인증서 사용 확인을 사용하지 못하게하는 것으로 보입니다.

요청에 대한 권한 부여 헤더를 사용하여 인증 할 수 있기를 원하므로 Java 라이브러리로 헤더 부분 만 생성하는 방법은 무엇입니까? 나는 주변을 둘러 보았고 아무 것도 찾을 수 없었다.

headeroauth = OAuth1(Oauth1Key, Oauth1Secret, 
       signature_type='auth_header') 

myResponse = requests.get("endpoint_here", auth=headeroauth, verify=False) 

다소 자바를 사용하여 같은 일의 수행하는 방법에 대한 입력 : 참고로

, 우리는 성공적으로 만든 좋은의 Oauth REST는이 같은 간단한 뭔가 파이썬을 사용하여 호출?

답변

4

OAuth 로그인을 만들 때 많이 사용하는 라이브러리가 있습니다. 하지만 제 생각에는 가장 쉬운 방법은 JWT (Json Web Token)입니다. 당신은 여기에 사용 지침을 찾을 수 있습니다 : 사용자가 로그인을 시도 할 때, 자신의 이름을 확인

1)

과 :

https://github.com/auth0/java-jwt

은 기본적으로 당신이하고 싶은 로그인 흐름과 같은 세 가지 단계를 수행하는 것입니다 비밀번호를 입력하고 성공할 경우 BACKWAY에 보관 된 JWT를 생성하십시오. 라이브러리 자체는 Json Web Token 객체에 서명하는 방법에 대해 매우 명확합니다.

2) 사용자에게 서명 토큰을 반환, 사용자는 먼저 토큰을 함께 할 당신이 인증

3을 필요로하여 REST 서비스/엔드 포인트의 각)에 대한 모든 요청의 헤더 안에 당신이 토큰을 보내드립니다 당신은 사용자가 (이걸하는 방법에 대한 라이브러리도 매우 명확합니다)를 확인하는 것입니다. 유효성 검사가 통과되면 토큰이 신뢰할 수 있음을 나타내며 앱으로 계속 진행할 수 있습니다.

JWT의 멋진 점은 비공개 정보를 토큰 안에 넣을 수 있다는 점입니다. 유용한 토큰이므로 데이터베이스에서 항상 찾아야 할 필요가 없습니다. 예를 들어 userId, 사용자 전자 메일, 토큰 시간 만료 자체 등

분명히이 데이터는 토큰 내부의 Base-64 String으로 이동합니다. 아마도 그는 충분히 똑똑하다면 디코딩하고 내부에있는 것을 볼 수 있습니다 (사용자의 userID, 사용자 이름 등을 볼 수 있습니다). 토큰 안쪽에 놓여있다.) 그러나 그가 처리 할 수없는 것은 서명이다. 따라서 그가 현명하게 플레이하고 토큰 내부의 어떤 값을 바꾸고 당신을 해킹하기 위해 새 값을 인코딩하려고하면 토큰 서명 유효성 검사가 실패하고 어떤 처벌을받을 지 결정할 수 있습니다.

여기에서 라이브를 볼 수 있습니다 디코딩되고 인코딩 된 JWT 컨텐트의 예. 이 도움이

https://jwt.io/

희망!

0

아래와 같이 헤더를 설정할 수 있습니다.

HttpPost post = new HttpPost("someurl"); 
    post.addHeader(key1, value1)); 
    post.addHeader(key2, value2)); 

방문 요청시 헤더 설정에 대한 자세한 내용은 Setting Header in request header을 참조하십시오.

관련 문제