Zabezpiecz WebAPI za pomocą JWT

Próbuję napisać aplikację mobilną, która otrzyma dane z witryny opartej na odpoczynku webapi.

Witryna powinna być zabezpieczona przez ACS (ponieważ może być wielu dostawców tożsamości).

Moja aplikacja mobilna sprawdza obecnie następujący adres URLhttps://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0 aby uzyskać listę adresów IP.

Następnie pozwalam użytkownikowi wybrać adres IP, a następnie za pomocą kontrolki przeglądarki internetowej pokazuję im login.

Gdy użytkownik się zaloguje, przechwytuję odpowiedź i wyodrębniam token, ale teraz nie jestem pewien, co powinienem robić. Token wygląda tak: -

{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}

Więc zgaduję, że powinienem wziąć część SecurityToken i dodać, że ma część nagłówka Authorization do żądania get?

Pytanie 1 brzmi: jak mam dołączyć token - czy po prostu dołączam token zabezpieczający, czy też muszę zakodować 64 kodowanie i ponownie dołączyć go jako nagłówek autoryzacji?

Pytanie 2 Jak skonfigurować webapi do obsługi JWT? Po zmodyfikowaniu ACS do wydawania tokenów JWT i zainstalowaniu JWTSecurityTokenHandler nadal otrzymuję następujący błąd (to jest z uwierzytelnianiem pasywnym):

 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.

Dzięki

Ross

questionAnswers(1)

yourAnswerToTheQuestion