Ho sviluppato un'API. Mi sono confuso e ho letto articoli per giorni.
In realtà la mia domanda è vicina a queste ma non esatta (forse una combinazione di esse);
Protezione dell'API REST a cui si accede da diversi client
API REST senza login per pochissimi clienti
Devo fornire sicurezza alla mia API. L'API verrà utilizzata dalle applicazioni client di terze parti. Ho allegato uno schema qui sotto.
Che cosa dovrei fare?
HTTP-Basic con SSL \ TLS, HTTP-Digest con SSL \ TLS, OAuth 2.0 o cos'altro dovrebbe essere?
Modifica(25/03/2015):
Questaparteèstataabbandonata.Guarda"Modifica (2015-04-01)" in basso
Ho deciso di implementare SSL + OAuth 2.0 ( Concessione di credenziali password del proprietario di risorse ). Se ritieni che non sia conveniente per lo scenario, ti preghiamo di informarmi.
+----------+
| Resource |
| Owner |
| |
+----------+
v
| Resource Owner
(A) Password Credentials
|
v
+---------+ +---------------+
| |>--(B)---- Resource Owner ------->| |
| | Password Credentials | Authorization |
| Client | | Server |
| |<--(C)---- Access Token ---------<| |
| | (w/ Optional Refresh Token) | |
+---------+ +---------------+
Figure 5: Resource Owner Password Credentials Flow
Il flusso illustrato in Figura 5 include i seguenti passaggi:
(A) Il proprietario della risorsa fornisce al client il suo nome utente e password.
(B) Il client richiede un token di accesso dall'autorizzazione endpoint del token del server includendo le credenziali ricevute dal proprietario della risorsa. Quando si effettua la richiesta, il cliente si autentica con il server di autorizzazione.
(C) Il server di autorizzazione autentica il client e lo convalida le credenziali del proprietario della risorsa e, se valido, emette un accesso token.
Modifica (2015-04-01):
Ho implementato Credenziali client OAuth 2.0 . E ora sto cercando come implementare un certificato SSL per la richiesta dell'API dei clienti.
Le credenziali del cliente che concedono il tipo DEVONO essere utilizzate solo da riservate clienti.
+---------+ +---------------+
| | | |
| |>--(A)- Client Authentication --->| Authorization |
| Client | | Server |
| |<--(B)---- Access Token ---------<| |
| | | |
+---------+ +---------------+
Figure 6: Client Credentials Flow
Il flusso illustrato in Figura 6 include i seguenti passaggi:
(A) Il client si autentica con il server di autorizzazione e richiede un token di accesso dall'endpoint del token.
(B) Il server di autorizzazione autentica il client e, se valido, emette un token di accesso.