Ich versuche, eine mobile Anwendung zu schreiben, die Daten von einer webapi restbasierten Website erhält.Sicheres WebAPI mit einem JWT
Die Site sollte über ACS gesichert werden (da es mehrere Identity Provider geben kann).
Meine mobile App fragt derzeit die folgende URL https://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0 ab, um eine Liste von IPs zu erhalten.
Ich erlaube dann dem Benutzer, eine IP zu wählen, und dann benutze ich eine Webbrowsersteuerung, die ich ihnen eine Anmeldung zeige.
Sobald der Benutzer angemeldet ist, erfassen ich die Antwort und extrahiere das Token, aber jetzt bin ich nicht wirklich sicher, was ich tun soll. Das Token sieht wie folgt aus: -
{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}
Also, ich vermute ich das Security teilnehmen sollte, und fügen Sie es ein Teil des Authorization-Header an die Erhaltungs-Anforderung hat?
Frage 1 ist, wie soll ich das Token anhängen - ich füge einfach das Sicherheits-Token-Bit an, oder muss ich Basis 64 das Los codieren und es erneut als Autorisierungsheader anhängen?
Frage 2 Wie konfiguriere ich das Webapi für die Handhabung eines JWT? Nachdem ich ACS geändert JWT Token ausgeben, und ich die JWTSecurityTokenHandler installierte ich noch die folgende Fehlermeldung erhalten (dies mit passiver Authentifizierung):
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.
Dank
Ross