2016-09-21 18 views
0

サービスでクライアントアプリケーションからの受信文字列を暗号化するWCFサーバーを作成しました。 WCFサービスから返された暗号化された文字列を復号化できるように、サーバーの公開キーをクライアントに返すにはどうすればよいですか? 私は助けが必要です。他に習得する方法はありますか?公開鍵をWCFサーバーからクライアントに返す方法

+0

あなたの考えは間違っています(少なくともセキュアな実装では)。必要なのは、第三者機関によって証明された証明書を持つPKIシステムです。それ以外の場合、文字列は本当に安全ではありません。 – Kafros

答えて

0

JSON Webトークン(JWT)を使用できます。

JWTには、一般に、ヘッダー、ペイロード、および署名という3つの部分があります。

header = '{"alg":"HS256","typ":"JWT"}' 

HS256は、このトークンが

ペイロードは、我々が行いたいの特許請求の範囲が含まHMAC-SHA256を使用して署名されていることを示す。

署名がヘッダをコードbase64urlことによって計算される
payload = '{"loggedInAs":"admin","iat":1422779638}' 

とペイロードをセパレータとしてピリオドで連結します。

key   = 'secretkey' 
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload) 
signature  = HMAC-SHA256(key, unsignedToken) 

トークンは次のようになります。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI 

私のWCFアプリケーションでは、このようなトークンを生成するためにJWT .dllを使用します。

public string GenToken() 
    { 
     byte[] key = new byte[]; 
     var payload= new Dictionary<string, object>() 
       { 
        { "idUsr", 1 }, 
        { "nameUsr", admin}, 
        {"accessTime",DateTime.UtcNow.AddMinutes(30)} 

       }; 
     string token = JWT.JsonWebToken.Encode(payload, key , JWT.JwtHashAlgorithm.HS256); 
        return token; 
    } 
関連する問題