/** * @param \TYPO3\Flow\Http\Request $request * @param string $identifier * @param string $publicKeyFingerprint * @return \TYPO3\Flow\Http\Request */ public function signRequest(\TYPO3\Flow\Http\Request $request, $identifier, $publicKeyFingerprint) { $signedRequest = clone $request; $signedRequest->setHeader('Date', gmdate(DATE_RFC2822)); $signData = $this->getSignatureContent($signedRequest); $signature = $this->rsaWalletService->sign($signData, $publicKeyFingerprint); $signedRequest->setHeader('X-Request-Signature', $identifier . ':' . base64_encode($signature)); return $signedRequest; }
/** * Build a URI to redirect to the server authentication endpoint * * @param \Flowpack\SingleSignOn\Client\Domain\Model\SsoClient $ssoClient The SSO client that wants to authenticate against the server * @param string $callbackUri A URI where the server should redirect back after successful authentication on the server * @return string The URI for the redirect */ public function buildAuthenticationEndpointUri(SsoClient $ssoClient, $callbackUri) { $uri = new Uri($this->endpointUri); $arguments = array('callbackUri' => (string) $callbackUri, 'ssoClientIdentifier' => $ssoClient->getServiceBaseUri()); ksort($arguments); $uri->setQuery(http_build_query($arguments)); $signature = $this->rsaWalletService->sign((string) $uri, $ssoClient->getPublicKeyFingerprint()); $arguments['signature'] = base64_encode($signature); $uri->setQuery(http_build_query($arguments)); return (string) $uri; }