zend-blog-3-backend

Форк
0
/
WsseGenerateHeader.php 
73 строки · 2.0 Кб
1
<?php
2

3
namespace App\Command;
4

5
use App\Repository\UserRepository;
6
use Symfony\Component\Console\Command\Command;
7
use Symfony\Component\Console\Input\InputArgument;
8
use Symfony\Component\Console\Input\InputInterface;
9
use Symfony\Component\Console\Output\OutputInterface;
10

11
class WsseGenerateHeader extends Command
12
{
13
    /**
14
     * @var UserRepository
15
     */
16
    private UserRepository $repository;
17

18
    public function __construct(UserRepository $repository)
19
    {
20
        parent::__construct();
21

22
        $this->repository = $repository;
23
    }
24

25
    protected function configure(): void
26
    {
27
        $this
28
            ->setName('mtt:wsse:generate-header')
29
            ->setDescription('Generate WSSE header by user')
30
            ->addArgument('username', InputArgument::REQUIRED, 'The username of the user.')
31
        ;
32
    }
33

34
    protected function execute(InputInterface $input, OutputInterface $output): int
35
    {
36
        $username = $input->getArgument('username');
37

38
        $user = $this->repository->findOneByUsername($username);
39
        if (!$user) {
40
            $output->writeln("<error>User \"{$username}\" not found</error>");
41

42
            return 1;
43
        }
44

45
        $output->writeln('<comment>Authorization:</comment> WSSE profile="UsernameToken"');
46

47
        try {
48
            $nonce = random_bytes(12);
49
        } catch (\Exception $e) {
50
            $nonce = openssl_random_pseudo_bytes(12, $isSourceStrong);
51
            if ($isSourceStrong === false || $nonce === false) {
52
                throw new \RuntimeException('IV generation failed');
53
            }
54
        }
55

56
        $created = date('c');
57
        $digest = base64_encode(
58
            sha1($nonce . $created . $user->getWsseKey(), true)
59
        );
60

61
        $output->writeln(
62
            sprintf(
63
                '<comment>X-WSSE:</comment> UsernameToken Username="%s",PasswordDigest="%s",Nonce="%s",Created="%s"',
64
                $username,
65
                $digest,
66
                base64_encode($nonce),
67
                $created
68
            )
69
        );
70

71
        return 0;
72
    }
73
}
74

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.