arrow-left

All pages
gitbookPowered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

JWS serializers

hashtag
JWS Serializer Manager Factory Service

A JWSSerializerManagerFactory is available as a service in your application container:

With this factory, you will be able to create the JWSSerializerManager you need:

You can now use the JWSSerializerManager as explained in the JWS Creation/Loading section.

Available JWS serialization modes are:

  • jws_compact

  • jws_json_general

  • jws_json_flattened

hashtag
JWS Serializer Manager As Service

There is also another way to create a JWSSerializerManager object: using the bundle configuration.

With the previous configuration, the bundle will create a public JWS Serializer Manager service named jose.jws_serializer.serializer1 with selected serialization modes.

hashtag
Custom Tags

This feature was introduced in version 1.1.

You can add custom tags and attributes to the services you create.

JWS creation

hashtag
JWS Builder Factory Service

A JWSBuilderFactory is available as a service in your application container:

<?php
use Jose\Component\Signature\JWSBuilderFactory;

$jwsBuilderFactory = $container->get(JWSBuilderFactory::class);

With this factory, you will be able to create the JWSBuilder you need:

You can now use the JWSBuilder as explained in the JWS Creation section.

hashtag
JWS Builder As Service

There is also another way to create a JWSBuilder object: using the bundle configuration.

With the previous configuration, the bundle will create a public JWS Builder service named jose.jws_builder.builder1 with selected signature algorithms.

hashtag
Custom Tags

This feature was introduced in version 1.1.

You can add custom tags and attributes to the services you create.

<?php
use Jose\Component\Signature\JWSSerializerManagerFactory;

$jwsSerializerManagerFactory = $container->get(JWSSerializerManagerFactory::class);
$jwsSerializerManager = $jwsSerializerManagerFactory->create(['jws_compact']);
$jwsBuilder = $jwsBuilderFactory->create(['HS256']);
jose:
    jws:
        builders:
            builder1:
                signature_algorithms: ['HS256', 'RS256', 'ES256']
                is_public: true
jose:
    jws:
        serializers:
            serializer1:
                serializers: ['jws_compact']
                is_public: true
<?php
$jwsSerializerManager = $container->get('jose.jws_serializer.serializer1');
jose:
    jws:
        serializers:
            serializer1:
                serializers: ['jws_compact']
                tags:
                    tag_name1: ~
                    tag_name2: {attribute1: 'foo'}
<?php
$jwsBuilder = $container->get('jose.jws_builder.builder1');
jose:
    jws:
        builders:
            builder1:
                signature_algorithms: ['HS256', 'RS256', 'ES256']
                tags:
                    tag_name1: ~
                    tag_name2: {attribute1: 'foo'}

Signed Tokens

To use the signed tokens (JWS), you have to install the web-token/jwt-signature componentarrow-up-right.

composer require web-token/jwt-signature

When this component is installed, signature algorithms are automatically handles by the Algorithm Manager Factory.

  • JWS serializers,

  • JWS creation,

  • .

JWS verification

hashtag
JWS Verifier Factory Service

A JWSVerifierFactory is available as a service in your application container:

With this factory, you will be able to create the JWSVerifier you need:

You can now use the JWSVerifier as explained in the JWS Creation section.

JWS verification
Reminder: it is important to check the token headers. See the checker section of this documentation.

hashtag
JWS Verifier As Service

There is also another way to create a JWSVerifier object: using the bundle configuration.

With the previous configuration, the bundle will create a public JWS Verifier service named jose.jws_verifier.verifier1 with selected signature algorithms.

hashtag
Custom Tags

This feature was introduced in version 1.1.

You can add custom tags and attributes to the services you create.

hashtag
JWS Loader Service

This feature was introduced in version 1.1.

The JWSLoaderFactory is available as a public service. You can retrieve it using the container or inject it into your services. It will help you to create JWSLoader objects on demand.

You can also create JWSLoader objects as services using the configuration of the bundle.

Or using the ConfigurationHelper.

<?php
use Jose\Component\Signature\JWSVerifierFactory;

$jwsVerifierFactory = $container->get(JWSVerifierFactory::class);
$jwsVerifier = $jwsVerifierFactory->create(['HS256']);
jose:
    jws:
        verifiers:
            verifier1:
                signature_algorithms: ['HS256', 'RS256', 'ES256']
                is_public: true
<?php
$jwsVerifier = $container->get('jose.jws_verifier.verifier1');
jose:
    jws:
        verifiers:
            verifier1:
                signature_algorithms: ['HS256', 'RS256', 'ES256']
                tags:
                    tag_name1: ~
                    tag_name2: {attribute1: 'foo'}
<?php
use Jose\Component\Signature\JWSLoaderFactory;

$jwsLoaderFactory = $container->get(JWSLoaderFactory::class);
jose:
    jws:
        loaders:
            jws_loader1:
                serializers: ['jws_compact']
                signature_algorithms: ['HS256']
                header_checkers: ['alg']
                is_public: true
<?php
use Jose\Bundle\JoseFramework\Helper\ConfigurationHelper;

...
ConfigurationHelper::addJWSLoader($container, 'jws_loader1', ['jws_compact'], ['HS256'], ['alg'], true);