Co to są tokeny okaziciela i token_type w OAuth 2?

140

Próbuję zaimplementować przepływ danych logowania właściciela zasobu i hasła ze specyfikacji OAuth 2. Mam problem ze zrozumieniem token_typewartości, która jest odsyłana z prawidłową odpowiedzią. W specyfikacji wszystkie przykłady pokazują, "token_type":"example"ale mówi, że tak powinno być

token_type WYMAGANE. Typ wydanego tokena zgodnie z opisem w punkcie 7.1 . W wartości nie jest rozróżniana wielkość liter.

Czy ktoś może mi to wyjaśnić?

Micheasza
źródło

Odpowiedzi:

158

token_typeto parametr w Access Token generujący wywołanie do serwera autoryzacji, który zasadniczo reprezentuje sposób, w jaki access_token zostanie wygenerowany i przedstawiony dla wywołań dostępu do zasobów. Podajesz token_type w wywołaniu generowania tokenu dostępu do serwera autoryzacji.

Jeśli podasz Bearer(Domyślnie w większości implementacji), access_tokenzostanie wygenerowany i odesłany do Ciebie. Nośnik można po prostu rozumieć jako „udzielenie dostępu posiadaczowi tego tokena”. Jeden ważny token i bez pytania. Z drugiej strony, jeśli wybierzesz Maci sign_type(domyślnie hmac-sha-1w większości implementacji), token dostępu jest generowany i utrzymywany jako tajny w Key Manager jako atrybut, a zaszyfrowany sekret jest odsyłany jakoaccess_token

Tak, możesz użyć własnej implementacji token_type, ale może to nie mieć większego sensu, ponieważ programiści będą musieli postępować zgodnie z Twoim procesem, a nie standardowymi implementacjami OAuth.

Abhishek Tyagi
źródło
28
Uważam, że „daj dostęp posiadaczowi tego tokena” ułatwia zrozumienie. Jest to odpowiednik wystawienia czeku „daj pieniądze okazicielowi czeku”.
NVM,
@NVM Dzięki za sugestię, z pewnością ma to sens. Zaktualizowałem to samo.
Abhishek Tyagi
33

Każdy może zdefiniować „token_type” jako rozszerzenie OAuth 2.0, ale obecnie typ tokenu „okaziciela” jest najpopularniejszym.

https://tools.ietf.org/html/rfc6750

Zasadniczo tego używa Facebook. Ich implementacja jest jednak nieco opóźniona w stosunku do najnowszej specyfikacji.

Jeśli chcesz być bezpieczniejszy niż Facebook (lub tak bezpieczny jak OAuth 1.0, który ma „podpis”), możesz użyć tokena typu „mac”.

Jednak będzie to trudne, ponieważ specyfikacja mac wciąż szybko się zmienia.

https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05

nov matake
źródło
14

Informacje w nagłówku Mozilla MDN

Bearer Token (Token okaziciela) Token
zabezpieczający z właściwością, dzięki której każda strona będąca w posiadaniu tokena („na okaziciela”) może go używać w dowolny sposób, w jaki może to zrobić każda inna strona będąca w jego posiadaniu. Korzystanie z tokena na okaziciela nie wymaga od okaziciela udokumentowania posiadania materiału klucza kryptograficznego (dowód posiadania).

Token okaziciela lub token odświeżania jest tworzony przez serwer uwierzytelniania. Gdy użytkownik uwierzytelnia Twoją aplikację (klienta), serwer uwierzytelniania przechodzi następnie i generuje dla Twojego Token okaziciela (token odświeżania), którego możesz następnie użyć do uzyskania tokenu dostępu.

Token okaziciela jest zwykle jakąś tajemniczą wartością utworzoną przez serwer uwierzytelniania, nie jest on losowy, jest tworzony na podstawie użytkownika, który daje ci dostęp, i klienta, który uzyskuje dostęp do twojej aplikacji.

user8307736
źródło