Sto provando a scrivere un'applicazione mobile che otterrà i dati da un sito Webapi basato sul resto.Secure WebAPI con JWT
Il sito deve essere protetto tramite ACS (poiché possono esistere più provider di identità).
La mia app mobile sta attualmente interrogando il seguente URL https://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0 per ottenere un elenco di IP.
Quindi autorizzo l'utente a scegliere un IP, quindi utilizzando un controllo del browser Web visualizzo loro un accesso.
Una volta che l'utente ha effettuato l'accesso, acquisisco la risposta ed estrai il token, ma ora non sono proprio sicuro di cosa dovrei fare. Il token si presenta così: -
{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}
Quindi, sto cercando di indovinare che dovrei prendere la parte SecurityToken e aggiungerlo ha parte dell'intestazione di autorizzazione alla richiesta get?
Domanda 1 è come devo allegare il token: devo semplicemente allegare il bit del token di sicurezza, oppure devo codificare in base 64 il lotto e collegarlo di nuovo come intestazione Autorizzazione?
Domanda 2 Come si configura webapi per gestire un JWT? Dopo che ho modificato ACS ad emettere i token JWT, e ho installato il JWTSecurityTokenHandler ho ancora ottenere il seguente errore (questo è con l'autenticazione passiva):
JWT10310: Unable to validate signature. validationParameters.SigningTokenResolver type: 'System.IdentityModel.Tokens.IssuerTokenResolver', was unable to resolve key to a token.
The SecurityKeyIdentifier is:
'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = X509ThumbprintKeyIdentifierClause(Hash = 0x2FEE3EE96B019D4BA0C046124B77C652EEF768E5)
)
'. validationParameters.SigningToken was null.
Grazie
Ross