gpt4 book ai didi

.net - 如何将 session 数据加密到 token 中以授权后续 Web 服务调用?

转载 作者:行者123 更新时间:2023-12-03 03:20:21 25 4
gpt4 key购买 nike

我有一个 Web 服务,需要防止未经授权的用户访问。我需要公开一个 Web 服务操作来根据用户名和密码对用户进行授权。对用户验证请求的响应应包含安全 token 。该安全 token 包含客户端应用程序可以使用的一些嵌入式用户属性,但在加密后,还将用于验证后续的 Web 服务操作。未加密的 token 看起来像这样:

UID=444; DTE=2012-06-01T14:01:54.9571247Z; GID=1; WID=00:1C:B3:04:85:11; SID=lit3py55t21z5v55vlm25s55;

我可以使用对称 key 算法,因为 key 可以是客户端和服务器之间的共享 secret (我控制两者)。我已经实现了以下Rijndael example使用 SHA1 和 key 大小 256。

此代码是 often quoted across the internet ,但是Microsoft themselves, state in relation to Rijndael :

The Rijndael class is the predecessor of the Aes algorithm. You should use the Aes algorithm instead of Rijndael. For more information, see the entry The Differences Between Rijndael and AES in the .NET Security blog.

我应该担心什么安全问题吗?如果是这样,您将如何更改示例代码,或者任何人都可以提供更好、更安全的示例吗?

最后,作为替代方案,我正在考虑使用 Windows Azure Access Control Service针对我自己的身份提供商颁发安全 token ,并使用该 token 作为单独的调用来获取用户帐户数据。由于应用程序在 Azure 中运行,这会是更好的实现吗?有人愿意分享他们在此类架构中使用 ACS 的经验吗?

顺便说一句:客户端应用程序是 iOS 5。

最佳答案

您可以使用 FormsAuthentication.Encrypt 方法,而不是自己构建一些东西。此方法将对您的 FormsAuthenticationTicket 进行加密并签名(此“票据”可以包含带有附加信息的用户名)。通过签署您的票证还可以防止篡改(这是基于机器 key )。

加密的票证只是您可以发送到移动设备的字符串。然后,对于每个其他请求,您可以简单地发送 token 并在服务器端对其进行解密。这就是身份验证部分。

现在,如果您想向客户端发送加密数据,我建议您只需通过 HTTPS 传输数据(这同样适用于您的 token )。

引用:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.encrypt.aspx

关于.net - 如何将 session 数据加密到 token 中以授权后续 Web 服务调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com