문제

얼마나 많은 캐릭터가 할 수 있습니까? Oauth 액세스 토큰과 Oauth 액세스 비밀 허용 된 캐릭터는 무엇입니까? 데이터베이스에 저장해야합니다.

도움이 되었습니까?

해결책

명백한 한계가 있는지 확실하지 않습니다. 그만큼 사양에는 아무것도 없습니다. 즉, Oauth 토큰은 종종 URL 매개 변수로 전달되므로 동일한 제한 사항이 있습니다. 즉, 올바르게 인코딩해야합니다.

다른 팁

Oauth는 토큰의 형식 또는 내용을 지정하지 않습니다. 우리는 단순히 암호화 된 이름 값 쌍을 토큰으로 사용합니다. 토큰에서 모든 문자를 사용할 수 있지만 토큰이 URL-Safe 인 경우 처리하기가 훨씬 쉽습니다. 우리는 Ciphertext를 URL-SAFE Base64로 인코딩하여이를 달성합니다.

대부분의 사람들이 이미 지적했듯이. Oauth 사양은 정확한 지시를 제공하지 않지만 그들은 말합니다.

인용 : http://tools.ietf.org/html/draft-hammer-oauth-10#section-4.9

"서버는 공유 세트가 유효한 시간 동안 최소한 공격에 저항하기 위해 충분히 길고 무작위로 공유 세트를 할당해야합니다."

"물론 서버는주의를 기울이고 가장 긴 비밀을 합리적으로 사용하도록 촉구됩니다."

반면, 최대 URL 길이의 브라우저를 고려해야합니다.

보다: http://www.boutell.com/newfaq/misc/urllength.html

사양을 읽으면 말합니다.

인증 서버는 등록 된 클라이언트에 클라이언트를 발행합니다
식별자 - 등록을 나타내는 고유 한 문자열
고객이 제공 한 정보. 클라이언트 식별자는 아닙니다
비밀; 리소스 소유자에게 노출되며 사용해서는 안됩니다.
클라이언트 인증을 위해서만. 클라이언트 식별자는 고유합니다
인증 서버.

클라이언트 식별자 문자열 크기는 이에 의해 정의되지 않은 상태입니다.
사양. 고객은에 대해 가정을 피해야합니다
식별자 크기. 인증 서버는 크기를 문서화해야합니다
모든 식별자 중 문제가 발생합니다.

둘째, 액세스 토큰은 URL 매개 변수가 아닌 헤더로 보내야합니다.

승인 : Bearer <Token>.

Oauth 토큰은 개념적으로 문자가 아닌 임의 크기의 바이트 시퀀스입니다. URL에서는 표준 URL 이스케이프 메커니즘을 사용하여 인코딩됩니다.

  unreserved = ALPHA, DIGIT, '-', '.', '_', '~'

예약되지 않은 모든 것은 %에 인코딩됩니다.

당신이 지나가는 oauth_token 매개 변수에 대해 이야기하는지 확실하지 않습니다. 일반적으로 oauth_token_secret, oauth_signature 등과 같이 추가 매개 변수를 저장 및 전송해야합니다. 일부는 다른 데이터 유형을 가지고 있습니다 (예 : Oauth_timestamp는 1970 년 이후 초를 나타내는 정수입니다) (소수 ASCII 자리로 인코딩).

OAUTH 토큰에 대한 유효한 숯은 HTTP 헤더 "인증"으로 자주 전송되므로 HTTP 헤더 값 제한에 의해 제한됩니다.

HTTP 헤더에 대한 유효한 숯은 다음과 같이 지정됩니다 https://tools.ietf.org/html/rfc7230#section-3.2.6. 또는 http 헤더를 확인할 수 있습니다. HEADERS.CHECKNANDVALUE () OKHTTP 프레임 워크의 UTIL : https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/headers.java

그리고 이것이 전부는 아닙니다. HTTP 헤더 분리기 (및 기타)와 공백 기호 ( ''및 ' t') 및 Double Quote ( ") (참조)를 포함하지 않습니다. https://tools.ietf.org/html/rfc7230#section-3.2.6) HTTP 헤더에서 사용하기 전에 Oauth 토큰을 피해야합니다. Curl Test 요청에서 인간이 자주 사용하여 사용되므로 좋은 토큰 생성기는 그러한 문자를 추가하지 않습니다. 그러나 가정을하기 전에 서비스가 작동하는 Oauth 토큰 생성기를 생성 할 수있는 문자를 확인해야합니다.

구체적으로, Oauth Spec이 아무 말도하지 않더라도 Java와 MySQL을 사용하는 경우 일반적으로 UUID를 사용하여 토큰을 생성하고 데이터베이스에 이진 (16)으로 저장하기 때문에 16자가됩니다. 최근 OAUTH를 사용하여 개발을 수행 한 것처럼 이러한 세부 사항을 알고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top