Come utilizzare l'autenticazione di base dei servizi?


10

Come utilizzare il modulo di autenticazione di base dei servizi ?

Voglio aggiungere http autenticazione di base per il mio servizio. L'ho installato e abilitato sulla mia configurazione dell'end point. Ho ottenuto questo "Autenticazione di base HTTP Services_basic_auth non ha impostazioni disponibili" nella mia configurazione dell'end point. dov'è la pagina delle impostazioni?

Risposte:


11

Il modulo autentica una chiamata di servizio Web su account drupal.

  1. Abilita il modulo
  2. Installa un utente drupal
  3. Effettuare la chiamata al servizio Web con le credenziali dell'utente.

Si noti che con l'autent di base, le credenziali possono essere intercettate se SSL non viene utilizzato.

Il modulo utilizza le intestazioni di autenticazione PHP standard e invia il modulo di accesso drupal standard, senza controllare ruoli o autorizzazioni specifici. Quindi qualsiasi utente drupal funzionerà.

Effettua una chiamata di prova al servizio web con arricciatura o wget per testarla. Ci sono anche istruzioni su come chiamare con PHP nella chiamata con risposta arricciatura stackoverflow.


È completamente diverso dall'uso di questa struttura in una singola chiamata URL? myusername: mypassword@example.com/callback
Citricguy

@Citricguy non è diverso. Questa sintassi è fornita dallo schema URI en.wikipedia.org/wiki/URI_scheme . Non lo farei in questo modo. Alcuni servizi REST possono essere testati in un browser e sarei preoccupato che le credenziali siano entrate nella cronologia del browser. Con https le credenziali sono crittografate. Dipenderebbe anche dalla libreria http, php http potrebbe essere OK vedi il commento su php.net/manual/en/features.http-auth.php#44686 . I browser Microsoft non supportano più la sintassi, quindi se si utilizza javascript per effettuare la chiamata potrebbe non funzionare. Alcune API usano questo metodo goo.gl/eS9mqv
Interlated

Siamo spiacenti, il modo in cui si implementa la chiamata non ha alcun impatto sulla chiamata. Quindi test con u: p@host.com se funziona bene. Sto dicendo che potrebbero esserci problemi di attuazione in questo modo. Penserei alle intestazioni, non all'URL il prima possibile per semplificare i test.
Interlated

4

Il modulo sopra è utilizzato per autenticare le chiamate di servizi utilizzando la tecnica di autenticazione dell'accesso di base . Userai il tuo nome utente e password Drupal per autenticare le chiamate di servizi aggiungendo l'intestazione di autorizzazione alla chiamata di servizio come segue

Quando l'agente utente desidera inviare le credenziali di autenticazione del server, può utilizzare l'intestazione di autorizzazione.

L'intestazione di autorizzazione è costruita come segue:

Nome utente e password sono combinati in una stringa "nome utente: password"

Il valore letterale della stringa risultante viene quindi codificato utilizzando la variante RFC2045-MIME di Base64, tranne non limitato a 76 char / line. Il metodo di autorizzazione e uno spazio, ad esempio "Base", vengono quindi inseriti prima della stringa codificata.

Ad esempio, se l'agente utente utilizza "Aladdin" come nome utente e "open sesame" come password, l'intestazione viene formata come segue :.

Autorizzazione: QWxhZGRpbjpvcGVuIHNlc2FtZQ di base ==

Per esempio di seguito è la chiamata che usa l'arriccia ..

curl -H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" http://www.example.com/endpoint/yourservice

2
sì, l'ho già letto, ma non sai ancora come implementarlo? cosa fare dopo aver installato il modulo ?. Qualsiasi aiuto sarebbe grande. grazie
Rijalul fikri il

2
  1. Una volta abilitato il modulo, vai su Struttura> Servizi
  2. Seleziona il tuo endpoint e fai clic su Modifica inserisci qui la descrizione dell'immagine

  3. Utilizzare uno strumento come https://addons.mozilla.org/fr/firefox/addon/restclient/ per testare il client:

inserisci qui la descrizione dell'immagine

Nota: ho avuto problemi con esso, anche se l'opzione di autenticazione di base HTTP è stata contrassegnata chiamando una risorsa di questo endpoint restituiva 200 anziché 401 . Vale a dire, il modulo non è riuscito a proteggere il mio endpoint.

Il problema appare in:

https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4

L'ho risolto facendo una patch per il modulo:

https://www.drupal.org/node/2734207


1

Cosa può esserci di sbagliato: dopo aver impostato tutte le impostazioni:

  1. abilitare il modulo servizi-base-autenticazione
  2. creare servizi api end-point, ad esempio: ottenere tutti i nodi
  3. impostare la casella di controllo "Autenticazione di base HTTP" nella pagina di modifica
  4. creare un utente

E ho notato che se non si disabilita l'autorizzazione "Visualizza contenuto pubblicato", qualsiasi utente può avere accesso all'end-point del servizio API con il risultato restituito.


0

Dopo aver installato il Services Basic Authenticationmodulo vai alle impostazioni REST del tuo server:

/admin/structure/services

Inserisci Editopzione e in fondo c'è una casella di controllo:

HTTP basic authentication

Abilitalo e premi il pulsante Salva.


Quale utente: password userò per l'autenticazione di base HTTP?
Ashwin,

-1

Non dimenticare di utilizzare il modulo di accesso al contenuto.

Aggiunta di ulteriori dettagli per la richiesta di MPD.

Se non si utilizza il modulo di accesso al contenuto, l'utente vedrà tutto il contenuto incluso quello creato da altri che non avrebbero dovuto vedere. Ad esempio, l'utente A ha memorizzato dati personali che l'utente B non dovrebbe vedere o saggiamente. Il modulo di autenticazione di base dei servizi abilita l'autent ma non impone l'accesso al contenuto. Il modulo di accesso al contenuto lo impone. Se non si utilizza il controllo di accesso al contenuto, non è necessario autenticare un utente.


Puoi espandere come questo modulo può risolvere le esigenze dell'utente?
mpdonadio

Si prega di consultare il mio aggiornamento nella risposta originale.
techwestcoastsfosea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.