Cheetah
AuthorizeController.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use OAuth2\Controller\AuthorizeController as BaseAuthorizeController;
8 
12 class AuthorizeController extends BaseAuthorizeController implements AuthorizeControllerInterface
13 {
14  private $nonce;
15 
16  protected function setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id = null)
17  {
18  $prompt = $request->query('prompt', 'consent');
19  if ($prompt == 'none') {
20  if (is_null($user_id)) {
21  $error = 'login_required';
22  $error_message = 'The user must log in';
23  } else {
24  $error = 'interaction_required';
25  $error_message = 'The user must grant access to your application';
26  }
27  } else {
28  $error = 'consent_required';
29  $error_message = 'The user denied access to your application';
30  }
31 
32  $response->setRedirect($this->config['redirect_status_code'], $redirect_uri, $this->getState(), $error, $error_message);
33  }
34 
35  protected function buildAuthorizeParameters($request, $response, $user_id)
36  {
37  if (!$params = parent::buildAuthorizeParameters($request, $response, $user_id)) {
38  return;
39  }
40 
41  // Generate an id token if needed.
42  if ($this->needsIdToken($this->getScope()) && $this->getResponseType() == self::RESPONSE_TYPE_AUTHORIZATION_CODE) {
43  $params['id_token'] = $this->responseTypes['id_token']->createIdToken($this->getClientId(), $user_id, $this->nonce);
44  }
45 
46  // add the nonce to return with the redirect URI
47  $params['nonce'] = $this->nonce;
48 
49  return $params;
50  }
51 
52  public function validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response)
53  {
54  if (!parent::validateAuthorizeRequest($request, $response)) {
55  return false;
56  }
57 
58  $nonce = $request->query('nonce');
59 
60  // Validate required nonce for "id_token" and "id_token token"
61  if (!$nonce && in_array($this->getResponseType(), array(self::RESPONSE_TYPE_ID_TOKEN, self::RESPONSE_TYPE_ID_TOKEN_TOKEN))) {
62  $response->setError(400, 'invalid_nonce', 'This application requires you specify a nonce parameter');
63 
64  return false;
65  }
66 
67  $this->nonce = $nonce;
68 
69  return true;
70  }
71 
72  protected function getValidResponseTypes()
73  {
74  return array(
75  self::RESPONSE_TYPE_ACCESS_TOKEN,
76  self::RESPONSE_TYPE_AUTHORIZATION_CODE,
77  self::RESPONSE_TYPE_ID_TOKEN,
78  self::RESPONSE_TYPE_ID_TOKEN_TOKEN,
79  self::RESPONSE_TYPE_CODE_ID_TOKEN,
80  );
81  }
82 
96  public function needsIdToken($request_scope)
97  {
98  // see if the "openid" scope exists in the requested scope
99  return $this->scopeUtil->checkScope('openid', $request_scope);
100  }
101 
102  public function getNonce()
103  {
104  return $this->nonce;
105  }
106 }
OAuth2\OpenID\Controller\AuthorizeController\getNonce
getNonce()
Definition: AuthorizeController.php:102
OAuth2\OpenID\Controller\AuthorizeController\needsIdToken
needsIdToken($request_scope)
Definition: AuthorizeController.php:96
use
GNU LESSER GENERAL PUBLIC LICENSE February Free Software Inc Franklin Fifth MA USA Everyone is permitted to copy and distribute verbatim copies of this license but changing it is not allowed[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it By the GNU General Public Licenses are intended to guarantee your freedom to share and change free software to make sure the software is free for all its users This the Lesser General Public applies to some specially designated software packages typically libraries of the Free Software Foundation and other authors who decide to use it You can use it but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular based on the explanations below When we speak of free we are referring to freedom of use
Definition: license.txt:27
OAuth2\OpenID\Controller\AuthorizeController
Definition: AuthorizeController.php:13
OAuth2\Controller\AuthorizeController\getClientId
getClientId()
Definition: AuthorizeController.php:369
php
OAuth2\OpenID\Controller
Definition: AuthorizeController.php:3
OAuth2\OpenID\Controller\AuthorizeController\setNotAuthorizedResponse
setNotAuthorizedResponse(RequestInterface $request, ResponseInterface $response, $redirect_uri, $user_id=null)
Definition: AuthorizeController.php:16
OAuth2\OpenID\Controller\AuthorizeController\buildAuthorizeParameters
buildAuthorizeParameters($request, $response, $user_id)
Definition: AuthorizeController.php:35
OAuth2\ResponseInterface\setError
setError($statusCode, $name, $description=null, $uri=null)
OAuth2\Controller\AuthorizeController\getState
getState()
Definition: AuthorizeController.php:364
OAuth2\OpenID\Controller\AuthorizeController\getValidResponseTypes
getValidResponseTypes()
Definition: AuthorizeController.php:72
OAuth2\Controller\AuthorizeController\getResponseType
getResponseType()
Definition: AuthorizeController.php:379
OAuth2\ResponseInterface
Definition: ResponseInterface.php:12
OAuth2\Controller\AuthorizeController
Definition: AuthorizeController.php:15
OAuth2\OpenID\Controller\AuthorizeControllerInterface
Definition: AuthorizeControllerInterface.php:6
OAuth2\RequestInterface
Definition: RequestInterface.php:6
OAuth2\Controller\AuthorizeController\getScope
getScope()
Definition: AuthorizeController.php:359
OAuth2\OpenID\Controller\AuthorizeController\validateAuthorizeRequest
validateAuthorizeRequest(RequestInterface $request, ResponseInterface $response)
Definition: AuthorizeController.php:52
OAuth2\ResponseInterface\setRedirect
setRedirect($statusCode, $url, $state=null, $error=null, $errorDescription=null, $errorUri=null)
OAuth2\RequestInterface\query
query($name, $default=null)
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10