Browse Source

Add in the "aud" claim.

... ensure we're dealing with our tokens.
pull/839/head
Adam Vessey 5 years ago
parent
commit
bc56ed16fc
  1. 2
      src/Event/StompHeaderEvent.php
  2. 2
      src/EventGenerator/EmitEvent.php
  3. 7
      src/EventSubscriber/JwtEventSubscriber.php
  4. 0
      src/EventSubscriber/StompHeaderEventSubscriber.php

2
src/Event/StompHeaderEvent.php

@ -11,7 +11,7 @@ use Symfony\Component\EventDispatcher\Event;
/** /**
* Event used to build headers for STOMP. * Event used to build headers for STOMP.
*/ */
class StompHeaderEvent implements StompHeaderEventInterface { class StompHeaderEvent extends Event implements StompHeaderEventInterface {
/** /**
* Stashed entity, for context. * Stashed entity, for context.

2
src/EventGenerator/EmitEvent.php

@ -11,11 +11,13 @@ use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountInterface; use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\islandora\Event\StompHeaderEvent;
use Drupal\islandora\Event\StompHeaderEventException; use Drupal\islandora\Event\StompHeaderEventException;
use Stomp\Exception\StompException; use Stomp\Exception\StompException;
use Stomp\StatefulStomp; use Stomp\StatefulStomp;
use Stomp\Transport\Message; use Stomp\Transport\Message;
use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/** /**
* Configurable action base for actions that publish messages to queues. * Configurable action base for actions that publish messages to queues.

7
src/EventSubscriber/JwtEventSubscriber.php

@ -19,6 +19,8 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
*/ */
class JwtEventSubscriber implements EventSubscriberInterface { class JwtEventSubscriber implements EventSubscriberInterface {
const AUDIENCE = 'islandora';
/** /**
* User storage to load users. * User storage to load users.
* *
@ -100,6 +102,7 @@ class JwtEventSubscriber implements EventSubscriberInterface {
$event->addClaim('sub', $this->currentUser->getAccountName()); $event->addClaim('sub', $this->currentUser->getAccountName());
$event->addClaim('roles', $this->currentUser->getRoles(FALSE)); $event->addClaim('roles', $this->currentUser->getRoles(FALSE));
$event->addClaim('aud', [static::AUDIENCE]);
} }
/** /**
@ -111,6 +114,10 @@ class JwtEventSubscriber implements EventSubscriberInterface {
public function validate(JwtAuthValidateEvent $event) { public function validate(JwtAuthValidateEvent $event) {
$token = $event->getToken(); $token = $event->getToken();
if (!in_array(static::AUDIENCE, $token->getClaim('aud'), TRUE)) {
$event->invalidate('Missing audience entry.');
}
$uid = $token->getClaim('webid'); $uid = $token->getClaim('webid');
$name = $token->getClaim('sub'); $name = $token->getClaim('sub');
$roles = $token->getClaim('roles'); $roles = $token->getClaim('roles');

0
src/EventSubscriber/StompHeaderSubscriber.php → src/EventSubscriber/StompHeaderEventSubscriber.php

Loading…
Cancel
Save