Projektuję interfejs API REST przy użyciu autoryzacji / uwierzytelnienia za pomocą klucza API.
Próbowałem dowiedzieć się, jakie jest dla niego najlepsze miejsce i odkryłem, że wiele osób sugeruje użycie niestandardowego nagłówka HTTP, takiego jak ProjectName-Api-Key
np .:
ProjectName-Api-Key: abcde
ale także możliwe i ideologicznie poprawne jest użycie Authorization
nagłówka z niestandardowym schematem, np .:
Authorization: ApiKey abcde
Z drugiej strony odkryłem, że niestandardowy schemat autoryzacji może być nieoczekiwany i nieobsługiwany przez niektórych klientów i prowadzi do niestandardowego kodu, więc lepiej jest użyć niestandardowego nagłówka, ponieważ klienci nie mają żadnych oczekiwań w stosunku do niego.
W jaki sposób wolisz wysłać klucz API?
Bearer
schemat jest używany wyłącznie z oAuth2. Zastosowanie go osobno od oAuth brzmi jak niewłaściwe użycie. Dlaczego warto używać tego schematu, jeśli nie ma prawdy? Nawiasem mówiąc, miałem problemy z wyborem rodzaju autoryzacji dla mojego interfejsu API. Interfejs API będzie dostępny tylko dla jednej zaufanej usługi, więc zbadałem przepływ poświadczeń klienta oAuth2 i w moim przypadku nie znalazłem żadnych korzyści w porównaniu z ApiKey.
ApiKey
zostanie zmieniona jej nazwa i zinterpretowana jako Access Token
udzielona klientowi bez upływu terminu ważności. Jest to rodzaj aspektu filozoficznego, postanowiłem nie wprowadzać skomplikowanych definicji, jeśli mój przypadek można opisać w prosty sposób, i postanowiłem po prostu nazwać go „ApiKey”. Jeśli Twój protokół implementuje standard oAuth, mogę zgodzić się na jego użycie Bearer
, ale tak nie jest, chyba nie można zastosować tego schematu.
Authorization: Bearer <token>
nagłówka i nigdy nie było z tym żadnego problemu. Tokenami są JWT .