@@ -32,13 +32,6 @@ value and then a User object is created::
3232
3333 class ApiKeyAuthenticator implements SimplePreAuthenticatorInterface
3434 {
35- protected $userProvider;
36-
37- public function __construct(ApiKeyUserProvider $userProvider)
38- {
39- $this->userProvider = $userProvider;
40- }
41-
4235 public function createToken(Request $request, $providerKey)
4336 {
4437 // look for an apikey query parameter
@@ -64,15 +57,15 @@ value and then a User object is created::
6457 public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey)
6558 {
6659 $apiKey = $token->getCredentials();
67- $username = $this-> userProvider->getUsernameForApiKey($apiKey);
60+ $username = $userProvider->getUsernameForApiKey($apiKey);
6861
6962 if (!$username) {
7063 throw new AuthenticationException(
7164 sprintf('API Key "%s" does not exist.', $apiKey)
7265 );
7366 }
7467
75- $user = $this-> userProvider->loadUserByUsername($username);
68+ $user = $userProvider->loadUserByUsername($username);
7669
7770 return new PreAuthenticatedToken(
7871 $user,
@@ -189,7 +182,7 @@ The ``$userProvider`` might look something like this::
189182 }
190183 }
191184
192- Now register your user provider as service:
185+ Now register your user provider as a service:
193186
194187.. configuration-block ::
195188
@@ -255,7 +248,7 @@ exception in ``refreshUser()``.
255248Handling Authentication Failure
256249-------------------------------
257250
258- In order for your ``ApiKeyAuthentication `` to correctly display a 403
251+ In order for your ``ApiKeyAuthenticator `` to correctly display a 403
259252http status when either bad credentials or authentication fails you will
260253need to implement the :class: `Symfony\\ Component\\ Security\\ Http\\ Authentication\\ AuthenticationFailureHandlerInterface ` on your
261254Authenticator. This will provide a method ``onAuthenticationFailure `` which
@@ -287,11 +280,9 @@ you can use to create an error ``Response``.
287280Configuration
288281-------------
289282
290- Once you have your ``ApiKeyAuthentication `` all setup, you need to register
283+ Once you have your ``ApiKeyAuthenticator `` all setup, you need to register
291284it as a service and use it in your security configuration (e.g. ``security.yml ``).
292- First, register it as a service. This assumes that you have already setup
293- your custom user provider as a service called ``your_api_key_user_provider ``
294- (see :doc: `/cookbook/security/custom_provider `).
285+ First, register it as a service.
295286
296287.. configuration-block ::
297288
@@ -302,8 +293,7 @@ your custom user provider as a service called ``your_api_key_user_provider``
302293 # ...
303294
304295 apikey_authenticator :
305- class : AppBundle\Security\ApiKeyAuthenticator
306- arguments : ["@api_key_user_provider"]
296+ class : AppBundle\Security\ApiKeyAuthenticator
307297
308298 .. code-block :: xml
309299
@@ -316,11 +306,7 @@ your custom user provider as a service called ``your_api_key_user_provider``
316306 <services >
317307 <!-- ... -->
318308
319- <service id =" apikey_authenticator"
320- class =" AppBundle\Security\ApiKeyAuthenticator"
321- >
322- <argument type =" service" id =" api_key_user_provider" />
323- </service >
309+ <service id =" apikey_authenticator" class =" AppBundle\Security\ApiKeyAuthenticator" />
324310 </services >
325311 </container >
326312
@@ -333,12 +319,12 @@ your custom user provider as a service called ``your_api_key_user_provider``
333319 // ...
334320
335321 $container->setDefinition('apikey_authenticator', new Definition(
336- 'AppBundle\Security\ApiKeyAuthenticator',
337- array(new Reference('api_key_user_provider'))
322+ 'AppBundle\Security\ApiKeyAuthenticator'
338323 ));
339324
340- Now, activate it in the ``firewalls `` section of your security configuration
341- using the ``simple_preauth `` key:
325+ Now, activate it and your custom user provider (see :doc: `/cookbook/security/custom_provider `)
326+ in the ``firewalls `` section of your security configuration
327+ using the ``simple_preauth `` and ``provider `` keys respectively:
342328
343329.. configuration-block ::
344330
@@ -354,6 +340,7 @@ using the ``simple_preauth`` key:
354340 stateless : true
355341 simple_preauth :
356342 authenticator : apikey_authenticator
343+ provider : api_key_user_provider
357344
358345 providers :
359346 api_key_user_provider :
@@ -374,6 +361,7 @@ using the ``simple_preauth`` key:
374361 <firewall name =" secured_area"
375362 pattern =" ^/admin"
376363 stateless =" true"
364+ provider =" api_key_user_provider"
377365 >
378366 <simple-preauth authenticator =" apikey_authenticator" />
379367 </firewall >
@@ -396,6 +384,7 @@ using the ``simple_preauth`` key:
396384 'simple_preauth' => array(
397385 'authenticator' => 'apikey_authenticator',
398386 ),
387+ 'provider' => 'api_key_user_provider',
399388 ),
400389 ),
401390 'providers' => array(
@@ -405,7 +394,7 @@ using the ``simple_preauth`` key:
405394 ),
406395 ));
407396
408- That's it! Now, your ``ApiKeyAuthentication `` should be called at the beginning
397+ That's it! Now, your ``ApiKeyAuthenticator `` should be called at the beginning
409398of each request and your authentication process will take place.
410399
411400The ``stateless `` configuration parameter prevents Symfony from trying to
@@ -441,6 +430,7 @@ configuration or set it to ``false``:
441430 stateless : false
442431 simple_preauth :
443432 authenticator : apikey_authenticator
433+ provider : api_key_user_provider
444434
445435 providers :
446436 api_key_user_provider :
@@ -461,6 +451,7 @@ configuration or set it to ``false``:
461451 <firewall name =" secured_area"
462452 pattern =" ^/admin"
463453 stateless =" false"
454+ provider =" api_key_user_provider"
464455 >
465456 <simple-preauth authenticator =" apikey_authenticator" />
466457 </firewall >
@@ -482,6 +473,7 @@ configuration or set it to ``false``:
482473 'simple_preauth' => array(
483474 'authenticator' => 'apikey_authenticator',
484475 ),
476+ 'provider' => 'api_key_user_provider',
485477 ),
486478 ),
487479 'providers' => array(
@@ -505,7 +497,7 @@ to see if the stored token has a valid User object that can be used::
505497 public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey)
506498 {
507499 $apiKey = $token->getCredentials();
508- $username = $this-> userProvider->getUsernameForApiKey($apiKey);
500+ $username = $userProvider->getUsernameForApiKey($apiKey);
509501
510502 // User is the Entity which represents your user
511503 $user = $token->getUser();
@@ -524,7 +516,7 @@ to see if the stored token has a valid User object that can be used::
524516 );
525517 }
526518
527- $user = $this-> userProvider->loadUserByUsername($username);
519+ $user = $userProvider->loadUserByUsername($username);
528520
529521 return new PreAuthenticatedToken(
530522 $user,
@@ -598,13 +590,10 @@ current URL is before creating the token in ``createToken()``::
598590
599591 class ApiKeyAuthenticator implements SimplePreAuthenticatorInterface
600592 {
601- protected $userProvider;
602-
603593 protected $httpUtils;
604594
605- public function __construct(UserProviderInterface $userProvider, HttpUtils $httpUtils)
595+ public function __construct(HttpUtils $httpUtils)
606596 {
607- $this->userProvider = $userProvider;
608597 $this->httpUtils = $httpUtils;
609598 }
610599
@@ -639,7 +628,7 @@ service:
639628
640629 apikey_authenticator :
641630 class : AppBundle\Security\ApiKeyAuthenticator
642- arguments : ["@api_key_user_provider", "@ security.http_utils"]
631+ arguments : ["@security.http_utils"]
643632
644633 .. code-block :: xml
645634
@@ -655,7 +644,6 @@ service:
655644 <service id =" apikey_authenticator"
656645 class =" AppBundle\Security\ApiKeyAuthenticator"
657646 >
658- <argument type =" service" id =" api_key_user_provider" />
659647 <argument type =" service" id =" security.http_utils" />
660648 </service >
661649 </services >
@@ -672,7 +660,6 @@ service:
672660 $container->setDefinition('apikey_authenticator', new Definition(
673661 'AppBundle\Security\ApiKeyAuthenticator',
674662 array(
675- new Reference('api_key_user_provider'),
676663 new Reference('security.http_utils')
677664 )
678665 ));
0 commit comments