Capitalisation boursière: $2.1847T -0.70%
Volume(24h): $64.4403B 0.74%
  • Capitalisation boursière: $2.1847T -0.70%
  • Volume(24h): $64.4403B 0.74%
  • Indice de peur et de cupidité:
  • Capitalisation boursière: $2.1847T -0.70%
Cryptos
Les sujets
Cryptospedia
Nouvelles
Cryptosopique
Vidéos
Top nouvelles
Cryptos
Les sujets
Cryptospedia
Nouvelles
Cryptosopique
Vidéos
bitcoin
bitcoin

$87959.907984 USD

1.34%

ethereum
ethereum

$2920.497338 USD

3.04%

tether
tether

$0.999775 USD

0.00%

xrp
xrp

$2.237324 USD

8.12%

bnb
bnb

$860.243768 USD

0.90%

solana
solana

$138.089498 USD

5.43%

usd-coin
usd-coin

$0.999807 USD

0.01%

tron
tron

$0.272801 USD

-1.53%

dogecoin
dogecoin

$0.150904 USD

2.96%

cardano
cardano

$0.421635 USD

1.97%

hyperliquid
hyperliquid

$32.152445 USD

2.23%

bitcoin-cash
bitcoin-cash

$533.301069 USD

-1.94%

chainlink
chainlink

$12.953417 USD

2.68%

unus-sed-leo
unus-sed-leo

$9.535951 USD

0.73%

zcash
zcash

$521.483386 USD

-2.87%

Articles d’actualité sur les crypto-monnaies

Comment configurer une configuration SAML par client pour mon application SaaS

May 27, 2024 at 05:03 am

Pour mon application SaaS, je souhaite configurer une configuration SAML par client. Je souhaite pouvoir modifier la configuration de mon pack de connexion Symfony One pour l'adapter à la configuration de mon client en fonction de ses besoins.

Comment configurer une configuration SAML par client pour mon application SaaS

This guide will help you configure SAML SSO for your Symfony application on a per-customer basis. You'll need to adjust the configuration of the Symfony One Login Bundle to match the specific requirements of each customer.

Ce guide vous aidera à configurer SAML SSO pour votre application Symfony par client. Vous devrez ajuster la configuration du Symfony One Login Bundle pour répondre aux exigences spécifiques de chaque client.

First, determine the appropriate bundle based on your Symfony version:

Tout d’abord, déterminez le bundle approprié en fonction de votre version Symfony :

* For Symfony 6, install the nbgrp/onelogin-saml-bundle from GitHub.

* Pour Symfony 6, installez le nbgrp/onelogin-saml-bundle depuis GitHub.

* For earlier Symfony versions, start with the hslaovich/OneloginSamlBundle from GitHub.

* Pour les versions antérieures de Symfony, commencez par hslaovich/OneloginSamlBundle de GitHub.

Next, add the default configuration. If this step is skipped, the application will fail to function properly. Edit the config/packages/nbgrp_onelogin_saml.yaml file as follows:

Ensuite, ajoutez la configuration par défaut. Si cette étape est ignorée, l'application ne fonctionnera pas correctement. Modifiez le fichier config/packages/nbgrp_onelogin_saml.yaml comme suit :

```yaml

```yaml

nbgrp_onelogin_saml:

nbgrp_onelogin_saml :

idp:

IdP :

default:

défaut:

settings:

paramètres:

assertionConsumerService:

assertionConsumerService :

url: '%env(SAML_ASSERTION_CONSUMER_SERVICE)%'

URL : '%env(SAML_ASSERTION_CONSUMER_SERVICE)%'

issuer: '%env(SAML_ISSUER)%'

émetteur : '%env(SAML_ISSUER)%'

spEntityId: '%env(SAML_SP_ENTITY_ID)%'

spEntityId : '%env(SAML_SP_ENTITY_ID)%'

x509cert: '%env(SAML_X509_CERT)%'

x509cert : '%env(SAML_X509_CERT)%'

```

```

Update the config/packages/security.yaml file as well:

Mettez également à jour le fichier config/packages/security.yaml :

```yaml

```yaml

security:

sécurité:

encoders:

encodeurs :

Symfony\Component\Security\Core\User\User: plaintext

Symfony\Component\Security\Core\User\User : texte brut

providers:

fournisseurs:

saml:

saml :

nbgrp_onelogin_saml

nbgrp_onelogin_saml

firewalls:

pare-feu :

main:

principal:

saml:

saml :

path: ^/saml

chemin : ^/saml

provider: saml

fournisseur : saml

entry_point: nbgrp_onelogin_saml_entry_point

point_d'entrée : nbgrp_onelogin_saml_entry_point

logout_entry_point: nbgrp_onelogin_saml_logout_entry_point

logout_entry_point : nbgrp_onelogin_saml_logout_entry_point

logout_success_handler: nbgrp_onelogin_saml_logout_success_handler

logout_success_handler : nbgrp_onelogin_saml_logout_success_handler

logout:

Se déconnecter:

path: ^/logout$

chemin : ^/déconnexion$

```

```

The nbgrp/onelogin-saml-bundle utilizes compilerpass to inject configuration into a registry in an array indexed by idp, which is then used throughout the application. We'll override this functionality and load the configuration dynamically from the database based on the hostname.

Le nbgrp/onelogin-saml-bundle utilise compilerpass pour injecter la configuration dans un registre dans un tableau indexé par idp, qui est ensuite utilisé dans toute l'application. Nous remplacerons cette fonctionnalité et chargerons la configuration dynamiquement à partir de la base de données en fonction du nom d'hôte.

Create a new service in the api/config/services.yaml file:

Créez un nouveau service dans le fichier api/config/services.yaml :

```yaml

```yaml

services:

prestations de service:

app.saml_configuration_loader:

app.saml_configuration_loader :

class: App\Security\SamlConfigurationLoader

classe : App\Security\SamlConfigurationLoader

arguments:

arguments:

- '@doctrine.orm.default_entity_manager'

- '@doctrine.orm.default_entity_manager'

```

```

Override relevant portions of the bundle:

Remplacez les parties pertinentes du bundle :

Those files will be overridden to enable dynamic configuration of the login controller, metadata, and authenticator.

Ces fichiers seront remplacés pour permettre la configuration dynamique du contrôleur de connexion, des métadonnées et de l'authentificateur.

Login Controller

Contrôleur de connexion

Override the api/vendor/nbgrp/onelogin-saml-bundle/src/Controller/Login.php file to utilize our configuration.

Remplacez le fichier api/vendor/nbgrp/onelogin-saml-bundle/src/Controller/Login.php pour utiliser notre configuration.

In the __construct method, we autowire and add our service.

Dans la méthode __construct, nous câblons automatiquement et ajoutons notre service.

```php

```php

use App\Security\SamlConfigurationLoader;

utilisez App\Security\SamlConfigurationLoader ;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

utilisez Symfony\Bundle\FrameworkBundle\Controller\AbstractController ;

use Symfony\Component\DependencyInjection\ContainerInterface;

utilisez Symfony\Component\DependencyInjection\ContainerInterface ;

use Symfony\Component\HttpFoundation\Request;

utilisez Symfony\Component\HttpFoundation\Request ;

use Symfony\Component\HttpFoundation\Response;

utilisez Symfony\Component\HttpFoundation\Response ;

use Symfony\Component\Routing\Annotation\Route;

utilisez Symfony\Component\Routing\Annotation\Route ;

use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

utilisez Symfony\Component\Security\Http\Authentication\AuthenticationUtils ;

class LoginController extends AbstractController

la classe LoginController étend AbstractController

{

{

private $samlConfigurationLoader;

privé $samlConfigurationLoader ;

public function __construct(ContainerInterface $container, SamlConfigurationLoader $samlConfigurationLoader)

fonction publique __construct(ContainerInterface $container, SamlConfigurationLoader $samlConfigurationLoader)

{

{

parent::__construct($container);

parent::__construct($conteneur);

$this->samlConfigurationLoader = $samlConfigurationLoader;

$this->samlConfigurationLoader = $samlConfigurationLoader;

}

}

*/

public function login(AuthenticationUtils $authenticationUtils, Request $request): Response

connexion de fonction publique (AuthenticationUtils $authenticationUtils, Request $request) : Réponse

{

{

$host = $request->server->get('HTTP_HOST');

$host = $request->server->get('HTTP_HOST');

$samlSettings = $this->samlConfigurationLoader->getSettingsFromHost($host);

$samlSettings = $this->samlConfigurationLoader->getSettingsFromHost($host);

// ...

//...

}

}

}

}

```

```

Metadata

Métadonnées

Line 19: Add our service.

Ligne 19 : Ajoutez notre service.

```php

```php

use App\Security\SamlConfigurationLoader;

utilisez App\Security\SamlConfigurationLoader ;

use Symfony\Component\DependencyInjection\ContainerInterface;

utilisez Symfony\Component\DependencyInjection\ContainerInterface ;

class MetadataController extends Controller

la classe MetadataController étend le contrôleur

{

{

public static function create(ContainerInterface $container): MetadataController

fonction statique publique créer (ContainerInterface $container): MetadataController

{

{

$samlConfigurationLoader = $container->get(SamlConfigurationLoader::class);

$samlConfigurationLoader = $container->get(SamlConfigurationLoader::class);

return new self($samlConfigurationLoader);

return new self ($ samlConfigurationLoader);

}

}

public function __invoke(Request $request): Response

fonction publique __invoke(Request $request) : Réponse

{

{

$host = $request->server->get('HTTP_HOST');

$host = $request->server->get('HTTP_HOST');

$samlSettings = $this->samlConfigurationLoader->getSettingsFromHost($host);

$samlSettings = $this->samlConfigurationLoader->getSettingsFromHost($host);

// ...

//...

}

}

}

}

```

```

Clause de non-responsabilité:info@kdj.com

Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!

Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.

Autres articles publiés sur Jul 31, 2026