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