2016-08-08 12 views
0

私は.NET Web API 2をC#で実装しています。これは正常に動作し、私はユーザー名とパスワードを送信し、ベアラトークンが返されます。ベアラトークンWeb APIからユーザデータを取得

ここでトークンは他のAPI呼び出しに使用されますが、呼び出しごとにユーザーデータを知りたいと思います。これは、任意のアプリがPythonコードなどからWeb APIを呼び出すことができるためです。この場合、ベアラトークンのみを送信し、ユーザー名は送信しません。

コードを掘り下げようとしましたが、見つけられませんでした。

すべてのアイデアはここで最も高く評価されます。

答えて

0

これに対する答えは、あなたが扱っているベアラトークンのタイプによって異なります。たとえば、これがjwtトークンである場合、ピリオドで区切られた3つの部分、ヘッダー、ペイロード、およびシグニチャーで構成されます。ペイロードからユーザーIDを取得するには、ペイロードをbase-64でデコードし、「sub」プロパティを取得する必要があります。 「サブ」は「クレーム」として知られています。トークンには多くのクレームが含まれていますが、通常、「サブ」にはユーザーIDが格納されています。 、あなたをそこから

var payload = Encoding.UTF8.GetString(TextEncodings.Base64Url.Decode(b64Payload)); 

https://jwt.io/introduction/のC#で

、あなたがのstring.Splitを(使用してトークンのペイロードを解析することができます)、その後、64デコードにこのようなペイロードをベース:詳細については、これを参照してください。

var tokenPayloadObj = JsonConvert.DeserializeObject<YourJwtObjectHere>(payload); 

最後に、ユーザーIDがあなたのJWTトークンオブジェクトのプロパティでなければなりません:ちょうどあなたが期待する形式と一致するオブジェクトにペイロードをデシリアライズする必要が

var userId = tokenPayloadObj.UserId; 
+0

通常のベアラートークンではなく、JWTを使用していません。 – user1144596

関連する問題