Я не очень уверен в аутентификации Symfony и oauth ...
Мы получили веб-приложение со стандартным логином, которое работает, как и ожидалось.Сейчас мы пытаемся создать параллельный способ аутентификации для пользователей, использующих смарт-карты.Я могу прочитать смарт-карту, но не могу использовать oauth-запрос для получения токена доступа и refrsh.
Моя идея - использовать эти данные для аутентификации (оба сохранены в пользователетаблица):
- идентификатор смарт-карты (пример: 2221).Это считывается со смарт-карты.
- подпись смарт-карты (генерируется путем объединения имени, фамилии и других данных со смарт-карты).Моя идея заключалась в том, чтобы md5 () затем эту объединенную строку.Эта подпись также сохраняется в пользовательской таблице.
Итак, как я могу получить действительный токен доступа и обновить токен, используя эти данные?
Каков правильный тип_транта в этой ситуации и чтодругие необходимые параметры?
Вот мой код:
$token = new UsernamePasswordToken($user, $smartCardSignature, 'main', $user->getRoles());
$user = $token->getUser();
$arrayOauthCredentials = array(
"client_id" => $client_id,
"client_secret" => $client_secret,
"grant_type" => "password",
"username" => // ?????
"password" => // ?????
);
$oAuth2GetAccessTokenReq = $this->oAuth2HttpClient->createRequest("POST", $this->getOAuth2Endpoint(self::TOKEN_ACTION), null, $arrayOauthCredentials);
$oAuth2Response = $this->oAuth2HttpClient->send($oAuth2GetAccessTokenReq);
$oAuth2 = json_decode($oAuth2Response->getBody(true));
$accessToken = $oAuth2->access_token;
$refreshToken = $oAuth2->refresh_token;
$session = $request->getSession();
if ($session->has("r_t"))
$session->remove("r_t");
$session->set("r_t", $refreshToken);
$user->setOAuth2Token($accessToken);
$this->em->persist($user);
$this->em->flush($user);
$this->get('security.token_storage')->setToken($token);
Спасибо, ребята