Asegure WebAPI con un JWT
Estoy tratando de escribir una aplicación móvil que obtenga datos de un sitio basado en webapi rest.
El sitio debe estar protegido a través de ACS (ya que puede haber múltiples proveedores de identidad).
Mi aplicación móvil actualmente está consultando la siguiente urlhttps://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0 para obtener una lista de IPs.
Luego permito al usuario elegir una IP, y luego, utilizando un control de navegador web, les muestro un inicio de sesión.
Una vez que el usuario ha iniciado sesión, capturo la respuesta y extraigo el token, pero ahora no estoy realmente seguro de lo que debería estar haciendo. El token se ve así:
{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}
Entonces, ¿supongo que debería tomar la parte securityToken y agregar que tiene parte del encabezado de Autorización para la solicitud de obtención?
La pregunta 1 es ¿cómo debo adjuntar el token? ¿Acabo de adjuntar el bit de token de seguridad, o tengo que basar 64 en la codificación del lote y volver a adjuntarlo como un encabezado de autorización?
Pregunta 2 ¿Cómo configuro el webapi para manejar un JWT? Después de que modifiqué ACS para emitir tokens JWT, e instalé JWTSecurityTokenHandler, sigo obteniendo el siguiente error (esto es con autenticación pasiva):
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.
Gracias
Ross