如何将公钥从WCF服务器返回到客户端

时间:2016-09-21 06:29:52

标签: c# wcf

我创建了一个WCF服务,其中服务从客户端应用程序加密传入的字符串。如何将服务器的公钥返回给客户端,以便它可以解密从WCF服务返回的加密字符串? 还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:0)

您可以使用 JSON网络令牌(JWT)

JWT通常有三个部分:标题,有效负载和签名。

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

HS256表示此令牌使用HMAC-SHA256

进行签名

有效负载包含我们希望提出的声明:

payload = '{"loggedInAs":"admin","iat":1422779638}'

签名由base64url编码头和有效负载计算,并以句点作为分隔符连接:

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;
    }