Browse Source

Add in the "aud" claim.

... ensure we're dealing with our tokens.
pull/839/head
Adam Vessey 4 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.
*/
class StompHeaderEvent implements StompHeaderEventInterface {
class StompHeaderEvent extends Event implements StompHeaderEventInterface {
/**
* 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\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\islandora\Event\StompHeaderEvent;
use Drupal\islandora\Event\StompHeaderEventException;
use Stomp\Exception\StompException;
use Stomp\StatefulStomp;
use Stomp\Transport\Message;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/**
* 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 {
const AUDIENCE = 'islandora';
/**
* User storage to load users.
*
@ -100,6 +102,7 @@ class JwtEventSubscriber implements EventSubscriberInterface {
$event->addClaim('sub', $this->currentUser->getAccountName());
$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) {
$token = $event->getToken();
if (!in_array(static::AUDIENCE, $token->getClaim('aud'), TRUE)) {
$event->invalidate('Missing audience entry.');
}
$uid = $token->getClaim('webid');
$name = $token->getClaim('sub');
$roles = $token->getClaim('roles');

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

Loading…
Cancel
Save