我正在关注Symfony 2的自定义身份验证提供程序说明书,但我不知道如何生成登录表单或具有适当所需 WSSE 标头的内容,因此我可以将其传递给我的自定义用户提供程序。
有这方面的文档或教程吗?也许有一些例子?该文档缺少此类信息。
我正在关注Symfony 2的自定义身份验证提供程序说明书,但我不知道如何生成登录表单或具有适当所需 WSSE 标头的内容,因此我可以将其传递给我的自定义用户提供程序。
有这方面的文档或教程吗?也许有一些例子?该文档缺少此类信息。
实际上,您不应该使用登录表单将 WSSE 标头发送到您的服务器:登录表单将发送 HTTP POST 请求(带有 POST 参数),但不会像 WSSE 连接所期望的那样修改 HTTP 标头。
我正在将 WSSE 与 javascript 和/或某些客户端(如 Android 应用程序)一起使用。
为了测试,我在命令行中使用 curl,在请求中添加 wsse-headers。
Hee 是一个带有 Symfony 的 PHP 客户端 WSSE 生成器示例
function hashPassword($password, $salt)
{
$salted = $password . '{' . $salt . '}';
$digest = hash('sha512', $salted, true);
//5000 iterations: the sysmfony default iterations
for ($i = 1; $i < 5000; $i++) {
$digest = hash('sha512', $digest . $salted, true);
}
return base64_encode($digest);
}
function wsse_header($username, $hashedPassword)
{
$nonce = hash_hmac('sha512', uniqid(null, true), uniqid(), true);
$created = new DateTime('now', new DateTimezone('UTC'));
$created = $created->format(DateTime::ISO8601);
$digest = hash('sha512', $nonce . $created . $hashedPassword, true);
return sprintf(
'X-WSSE: UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',
$username, base64_encode($digest), base64_encode($nonce), $created
);
}
echo wsse_header('someUsername',
hashPassword('somePassword', 'someSalt'));
您可以将此示例应用于其他客户端(Android、Ios、Javascript...)