2017-01-19 1 views
1

Je travaille en C# sur .net/mono sur un projet de type IOT avec des périphériques et un service cloud. Les services cloud gèrent l'authentification et les réclamations à l'aide d'IdentityServer3 et je l'ai réussi à fournir un jeton avec des revendications.Dans ServiceStack, comment puis-je utiliser un JWT publié en externe?

L'appareil n'aura pas de connexion Internet lorsqu'un utilisateur tentera d'interagir avec celui-ci afin qu'un jeton JWT puisse être acquis depuis le cloud et transmis à un système entièrement déconnecté. La clé de signature pour le JWT est pré-partagée lors du provisionnement afin qu'il puisse vérifier l'intégrité du jeton.

Dans servicestack, il existe un support de JWT mais je ne peux pas trouver comment passer un jeton JWT avec la requête d'une manière qui remplit l'AuthSession. Quelqu'un peut-il fournir des conseils sur:

  1. Comment configurer le ServiceStack pour identifier, valider et décompresser le contenu JWT sans en être l'émetteur? Je ne trouve aucun exemple comme celui-ci. J'ai essayé JsonClient .BearerToken et .SetTokenCookie en vain.
  2. Si 1 n'est pas actuellement possible, puis-je accrocher dans les points d'extensibilité fournis pour créer la fonctionnalité requise, et si oui pouvez-vous me dire par où commencer.

Répondre

1

Alors que ServiceStack inclut son propre fournisseur d'authentification JWT, vous devriez utiliser la même bibliothèque que celle qui émet le jeton pour le gérer dans ServiceStack. N'utilisez donc JWT AuthProvider intégré à ServiceStack que s'il est également utilisé pour créer le jeton.

Si vous utilisez IdentifyServer à la place, vous pouvez pas commander ce projet:

https://github.com/MacLeanElectrical/servicestack-authentication-identityserver/

Ou ce guide:

http://estynedwards.com/blog/2016/01/30/ServiceStack-IdentityServer-Angular/

Pour des exemples de la façon de traiter IdentifyServer émirent des jetons.