public function createToken(Request $request, $providerKey) { $jwt = $request->query->get('jwt'); if (!$jwt && $this->kernel->getEnvironment() == 'dev') { $tenant = $this->em->getRepository('AtlassianConnectBundle:Tenant')->find(1); $clientKey = $tenant->getClientKey(); $sharedSecret = $tenant->getSharedSecret(); $qshHelper = new QSH(); $qsh = $qshHelper->create('GET', $request->getRequestUri()); $payload = ['iss' => $clientKey, 'iat' => time(), 'exp' => time() + 86400, 'qsh' => $qsh, 'sub' => 'admin']; $jwt = JWT::encode($payload, $sharedSecret); } if (!$jwt) { throw new BadCredentialsException('No JWT token found'); } return new PreAuthenticatedToken('anon.', $jwt, $providerKey); }
private function buildAuthHeader($method, $restUrl) { $token = $this->buildPayload($method, $restUrl); $jwt = JWT::encode($token, $this->tenant->getSharedSecret()); return ['Authorization' => 'JWT ' . $jwt]; }