2016-09-12 10 views
1

トークンを使用してユーザーデータを受信する必要があります。こんにちは。トークンを使用してユーザーデータを受信する必要があります。私はWeb API + WebSocket、Webブラウザ経由のWebSocket接続を持っています。トークンを使用しているユーザーに関する情報を取得する方法

var webSocket = new WebSocket(handlerUrl); 
//Open connection handler. 
webSocket.onopen = function() { 
    webSocket.send("{\"type\":\"LOGIN\",\"access_token\":\"Bearer HIDDEN\"}"); 
}; 

一度接続するとすぐにトークンを送信します。次のようにサーバー側で は、それが見えます:

public class SocketClientController: ApiController 
{ 
     public HttpResponseMessage Get() 
     { 
     HttpContext.Current.AcceptWebSocketRequest (new WebSocketHandler()); 
     return Request.CreateResponse (HttpStatusCode.SwitchingProtocols); 
    } 
<miss> 

Socketクラス:

<miss> 
    private void Login(string access_token) 
    { 
// here i want get user info 
    } 

    public override void OnMessage(string input) 
    { 
      dynamic data = JObject.Parse(input); 

      switch ((string)data.type) 
      { 
       case "LOGIN": 
       Login((string)data.access_token); 
       break; 
      } 
    } 

私は、Identity、あなたが最初に私のデータに合ったクライアントから受信したトークンを有する変異体を使用しています。ログインとパスワードを使わずにユーザー入力を得る方法を教えて、[認証]を使用してください。

私の英語のために残念です。

+0

以下のコードはありますか?ユーザーから取得したトークンを検証するためにトークン(セッションデータなど)を保存する必要があります(ログイン) – rbr94

+0

@ rbr94回答ありがとうございます!私はかなり理解していない、これはトークンだけをユーザー名を取得することが可能なので、セッションでトークンを維持するための問題ではない? – Feanon

+0

あなたはユーザー名とトークンの両方を組み合わせることを意味します。つまり、それらの間に何らかの種類の接続がありますか? – rbr94

答えて

0

私は自分の仕事を決めました!

public class MachineKeyProtector : Microsoft.Owin.Security.DataProtection.IDataProtector 
     { 
      private readonly string[] _purpose = 
      { 
        typeof(OAuthAuthorizationServerMiddleware).Namespace, 
        "Access_Token", 
        "v1" 
       }; 

      public byte[] Protect(byte[] userData) 
      { 
       throw new NotImplementedException(); 
      } 

      public byte[] Unprotect(byte[] protectedData) 
      { 
       return System.Web.Security.MachineKey.Unprotect(protectedData, _purpose); 
      } 
     } 

用途:あなたはトークンを保存しない

var secureDataFormat = new TicketDataFormat(new Providers.MachineKeyProtector()); 
AuthenticationTicket ticket = secureDataFormat.Unprotect(access_token); 
var userId = ticket.Identity.GetUserId(); 
関連する問題