Ho letto tramite RFC 2617 e non riesco a trovare lì o altrove quale sia il delimitatore se sono supportati più schemi. Ad esempio, supponiamo che sia Basic e Digest siano supportati. Capisco che possa apparire in questo modo:Qual è il delimitatore per l'autenticazione WWW per più schemi?
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic
WWW-Authenticate: Digest
Ma ho anche letto che entrambi possono essere elencati come una sola riga, ma nessuno si presenta sempre un esempio o descrive cosa delimitatore da utilizzare. Ho le precauzioni che le virgole possono essere utilizzati all'interno di un unico schema visto:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest param1="foo", param2="bar"
Ho anche letto che se virgole sono utilizzati all'interno di uno schema, che gli altri regimi devono essere collocati su righe separate. Quindi immagino che nel caso di cui sopra, se abbiamo aggiunto di base sembrerebbe in questo modo:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest param1="foo", param2="bar"
WWW-Authenticate: Basic
Questo è abbastanza semplice. Ma ora supponiamo di avere solo una riga
Quale è? È un elenco di schemi delimitati da virgole, o è uno schema, con alcuni parametri?
Sì, sembra che WinInet non gestisca più schemi di autenticazione su un'unica intestazione. Non ne sono entusiasta, ma penso che potrei eseguire il servizio su più endpoint, uno che supporta solo Basic, e uno che supporta solo Negotiate, e fare in modo che il client provi quello che supporta solo Negotiate per primo, e se fallisce , passare a Base. – bpeikes
L'utilizzo di una risorsa diversa per un diverso tipo di schema di autenticazione non mi sembra utile. Dopotutto, vuoi codificare l'intestazione in una risposta '401 Non autorizzata', se il client tenta di accedere a una risorsa specifica non autenticata. Inoltre: il concetto di endpoint mostra una mancanza di comprensione dell'architettura REST di HTTP. Sul web abbiamo piuttosto degli entry point. – aef