我是一名PHP开发人员,几乎不了解.NET。 .NET工作人员已经要求我将用于解密身份验证票证的.NET代码转换为PHP,以便PHP代码可以为我的应用程序设置适当的会话变量来运行。这甚至可能吗?我正盯着代码,这让我感到困惑。我会继续尝试,如果有人能告诉我这不是浪费时间因为某种原因我甚至都不知道。谢谢你的帮助!
其他信息:我是否可以首先使用PHP获取票证?
答案 0 :(得分:5)
首先,打开你的machine.config并添加一个machinekey条目。根据aspnet 2.0的machinekey生成器中随机生成的密钥和验证密钥设置解密密钥和验证密钥。
一定要使用默认值,即。 AES和SHA1。 现在您已经拥有AES解密密钥,将其存储在某处,因为您将需要在php端使用它。 在你的dot net应用程序中,进入web.config并获取表单auth cookie名称,通常类似于.ASPXAUTH
现在转到PHP端。下载并设置AES加密库,如此http://phpseclib.sourceforge.net/documentation/
然后在PHP中你可以做这样的事情(这使用了phpsec lib):
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Crypt/AES.php');
$authCookie = $_COOKIE['_ASPXAUTH'];
echo $authCookie;
$aes = new Crypt_AES();
$aes->setKey('BCDCBE123654F3E365C24E0498346EB95226A307857B9BDE8EBA6198ACF7F03C');
echo $aes->decrypt($authCookie);
现在最终出现的是首先是pm + SHA1哈希+ auth票证的字节表示。您必须将序列化字节转换为字符串以使其可读。其他人可以在最后一步发光吗?
答案 1 :(得分:1)
正如Gumbo所说,你需要考虑所涉及的算法。 asp.net身份验证票证使用:
答案 2 :(得分:1)
表单身份验证票证是 用于告诉ASP.NET应用程序 你是谁。因此,门票正在建设中 表格身份验证块 安全
故障单已加密并签名 使用配置 服务器的Machine.config的元素 文件。 ASP.NET 2.0使用 decryptionKey和新的解密 元素的属性 加密表单身份验证 门票。解密属性允许 您指定加密算法 使用。 ASP.NET 1.1和1.0使用3DES 加密,不可配置。 篡改票价值是 由未能解密而确定 服务器上的票证。结果, 用户将被重定向到登录 页。
如果应用程序部署在 Web场,你必须确保 每台服务器上的配置文件 为...分享相同的价值 validationKey和decryptionKey 标签中的属性, 用于散列和 分别解密票证。 你必须这样做,因为你做不到 保证哪个服务器将处理 连续的请求。更多 相关信息 FormsAuthenticationTicket加密 和Web场部署 考虑,请访问以下内容 MSDN网站:
因此,您可以指定要遵循的加密/解密算法和密钥。您可以在PHP中使用相同的解密逻辑。
答案 3 :(得分:0)
如果你知道解密算法,你肯定可以在PHP中实现它。