SAML2
Authentification SAML2 pour PowerShell Universal.
SAML2 nécessite une licence.
PowerShell Universal peut être configuré pour s'intégrer à un fournisseur d'identité SAML2. Cette documentation fournit les détails nécessaires à la configuration de PSU avec un tel système.
Chargement automatique des métadonnées
PowerShell Universal offre un mécanisme permettant de charger le document de métadonnées directement depuis le fournisseur d'identité SAML2 plutôt que de fournir manuellement les options de configuration. Cette méthode recueille autant d'informations que possible. L'Entity ID devra tout de même être fourni.
Le chemin de rappel sera affiché en haut de la fenêtre modale de la propriété.

Saisie manuelle des valeurs
Paramètres du fournisseur d'identité
Vous devrez configurer votre fournisseur d'identité pour l'application PowerShell Universal. Vous devrez définir un Entity ID acceptable et mapper les attributs. PowerShell Universal exige que l'attribut name soit mappé. Le nom de l'attribut doit être le suivant.
Vous devez le mapper à l'identité utilisateur que vous souhaitez utiliser dans PowerShell Universal.
Des attributs supplémentaires peuvent être mappés et seront disponibles lors de l'évaluation des rôles. Vous trouverez ci-dessous un exemple de configuration de Shibboleth.
Paramètres de l'Entity ID
HTTPS est requis pour l'authentification SAML2.
Plusieurs paramètres de base peuvent être configurés dans la console d'administration de PowerShell Universal. Pour ajouter la prise en charge de SAML2, cliquez sur Sécurité \ Authentification. Dans le coin supérieur droit, vous pouvez sélectionner SAML2 dans le menu déroulant.

Une fois l'intégration SAML2 ajoutée, vous pouvez configurer les paramètres de base pour communiquer avec votre fournisseur d'identité. Vous aurez besoin au minimum de l'Entity ID et de l'Identity Provider Entity ID configurés.
En règle générale, ces Entity ID sont des URL configurées dans votre fournisseur d'identité.

Le certificat de service est utilisé pour signer les requêtes. Il n'est pas obligatoire. Il peut s'agir d'un chemin local au service PSU ou du nom distinctif d'un certificat installé dans le magasin de certificats Personal Computer.
Paramètres supplémentaires
En plus des paramètres disponibles dans la console d'administration, vous pouvez également définir les éléments suivants dans le fichier de configuration authentication.ps1.
ServiceCertificatePassword
Si vous utilisez un chemin de fichier pour votre certificat et qu'il nécessite un mot de passe, vous pouvez le spécifier via le paramètre -ServiceCertificatePassword de Set-PSUAuthenticationMethod. La valeur de ce paramètre est une SecureString. Vous pouvez utiliser le module SecretManagement pour charger des secrets.
Configure
Le paramètre -Configure est un bloc de script qui peut être utilisé pour définir des paramètres supplémentaires non exposés par Set-PSUAuthenticationMethod. Le bloc de script sera appelé lors de la configuration du fournisseur et recevra un seul paramètre contenant un objet avec les options pour l'authentification SAML2.
L'objet est de type Saml2Options. Le sous-objet SPOptions se trouve ici.
Exemple : Entra ID
Configurez une application d'entreprise Entra ID dans Azure. Vous trouverez un guide étape par étape ici. Vous devrez récupérer l'ID d'application, le document de métadonnées de fédération ainsi que le point de terminaison SAML-P. Dans votre inscription d'application, cliquez sur le bouton Points de terminaison.

Étape par étape
Dans PowerShell Universal :
Cliquez sur Sécurité \ Authentification.
Ajoutez le fournisseur d'authentification SAML2.
Cliquez sur le bouton Modifier les propriétés.
Pour l'Entity ID, vous devrez saisir l'ID d'application Entra ID précédé du préfixe spn:
Par exemple : spn:2cf33625-e312-4659-a7bd-66ade51a0ea2
Pour l'Identity Provider Entity ID, vous devrez récupérer l'entity ID depuis le document de métadonnées de fédération. Ouvrez l'URL du document dans un navigateur web.

Pour l'adresse de métadonnées, insérez l'URL du document de métadonnées de fédération.
Pour l'URL de retour, insérez l'URL de votre serveur PowerShell Universal avec le chemin /Saml/Acs.
Pour l'URL du service d'authentification unique, insérez le point de terminaison SAML-P depuis Azure.

Une fois terminé, enregistrez les paramètres et activez le fournisseur SAML. Cliquez sur Se déconnecter et accédez à l'URL de votre console d'administration.
Vous serez redirigé vers Azure pour vous connecter, puis redirigé vers PowerShell Universal après l'authentification.
Toute erreur survenue sera consignée dans le journal de PowerShell Universal. Si la connexion échoue, vous pouvez accéder à /login pour vous connecter avec un compte local.
Mappage des revendications
Pour fournir des revendications de groupe à PowerShell Universal, vous devrez exposer les revendications de groupe depuis votre inscription d'application. Cliquez sur Configuration des jetons, puis sur Ajouter une revendication de groupes.

Après avoir cliqué sur Ajouter une revendication de groupes, vous aurez la possibilité de sélectionner les groupes à fournir. Si vous sélectionnez Tous les groupes, les revendications de groupe seront transmises à PowerShell Universal.
Si vous sélectionnez Groupes affectés à l'application, assurez-vous de cocher la valeur Émettre les groupes en tant que revendications de rôles. Ce paramètre nécessite un plan Entra ID payant.

Pour affecter un groupe à votre inscription d'application, localisez votre application dans Applications d'entreprise et cliquez sur Utilisateurs et groupes. Ensuite, cliquez sur Ajouter un utilisateur\groupe et sélectionnez les groupes que vous souhaitez affecter à votre application.
Une fois les revendications de groupe configurées dans Entra ID, vous pouvez mettre à jour les mappages de revendications de PowerShell Universal pour les groupes fournis.
Pour chaque rôle que vous souhaitez affecter à un groupe Entra ID, spécifiez le Type de revendication et la Valeur de revendication pour ce rôle. Par exemple, j'ai un groupe dans mon environnement avec l'ID 446832da-d4ad-4972-b0a2-eda736129928. Le Type de revendication pour cet objet est http://schemas.microsoft.com/ws/2008/06/identity/claims/role.
Pour affecter ce groupe au groupe administrateur, je procéderais comme suit.

Les utilisateurs de ce groupe feront désormais partie du rôle Administrateur dans PowerShell Universal. Si vous avez sélectionné une propriété de groupe SAML différente, la valeur peut être différente (par exemple, sAMAccountName).
Dépassements de groupe
Pour les organisations disposant de nombreux groupes, il est recommandé de limiter le nombre de groupes transmis à PowerShell Universal. Cela peut résoudre les problèmes d'autorisation liés à un trop grand nombre de groupes dépassant les limites de l'application. Dans les paramètres de l'application d'entreprise, cliquez sur Authentification unique, puis sur le bouton Modifier sous Attributs et revendications.

Cliquez sur la revendication de groupes pour afficher les options. Les options avancées vous permettront de filtrer les groupes transmis au serveur PowerShell Universal. Vous pouvez également configurer les revendications de groupe via la configuration des jetons dans l'inscription d'application pour l'application d'entreprise.

Exemple : Okta
Cet exemple montre comment configurer l'authentification SAML2 Okta pour une utilisation avec PowerShell Universal.
Dans Okta, vous devrez configurer votre application de manière similaire à ce qui suit. HTTPS est requis par SAML2, et vous devrez inclure l'URL de votre instance PSU dans l'URL d'authentification unique, suivie de /Saml2/Acs. Le chemin est sensible à la casse.
La restriction d'audience doit correspondre à l'URL de votre serveur PowerShell Universal.

Pour que vos utilisateurs puissent accéder à PowerShell Universal, vous devez vous assurer qu'ils ont été affectés à l'application Okta.

Dans l'onglet Authentification de votre application, cliquez sur le bouton Afficher les instructions de configuration SAML.

Vous devrez récupérer les deux URL et télécharger le certificat pour configurer PowerShell Universal. Consultez l'étape suivante pour savoir comment utiliser ces URL dans le fichier authentication.ps1.
authentication.ps1
Le fichier authentication.ps1 est utilisé pour configurer PowerShell Universal.
EntityId
Cette valeur doit correspondre à ce que vous avez saisi dans la restriction d'audience dans Okta.
string
IdentityProviderEntityId
Il s'agit de la valeur présentée dans la page des instructions de configuration SAML.
string
CallbackPath
Il s'agit du chemin vers lequel l'utilisateur sera redirigé si aucun chemin de redirection n'a été fourni.
string
SigningKey
Il s'agit du fichier de certificat téléchargé sur la page des instructions de configuration SAML.
string
SingleSignOnServiceUrl
Il s'agit de l'URL d'authentification fournie sur la page des instructions de configuration SAML.
string
Exemple : Shibboleth
Cet exemple montre comment configurer Shibboleth pour une utilisation avec PowerShell Universal. Il fournit la configuration la plus simple et ne suit pas nécessairement les meilleures pratiques.
Cet exemple suppose que vous avez installé Shibboleth Identity Provider v4 avec une intégration Active Directory.
ldap.properties
Les propriétés LDAP ont été configurées pour s'authentifier sur le domaine local à l'aide d'un compte Administrateur de domaine. L'URL LDAP a été configurée et TLS a été désactivé.
Vous trouverez ci-dessous l'exemple complet du fichier ldap.properties.
relying-party.xml
Le fichier relying-party.xml a été mis à jour pour activer l'IdP ouvert. Cela signifie que tout Entity ID peut communiquer avec le fournisseur d'identité. Vous pouvez également configurer cela pour imposer des Entity ID spécifiques. La configuration par défaut a également été ajustée pour utiliser le bean SAML2.AttributeQuery.
attribute-resolver.xml
Le fichier attribute-resolver.xml a été mis à jour pour utiliser le connecteur de données LDAPDirectory. Il charge l'adresse e-mail, le prénom, le SN et le nom d'affichage depuis Active Directory. Il mappe ensuite le nom principal, qui correspond au nom d'utilisateur de la personne qui se connecte, au type de revendication requis à l'aide d'un encodeur d'attribut.
attribute-filter.xml
Le fichier attribute-filter.xml a été mis à jour pour publier plusieurs attributs mappés par le connecteur de données LDAPDirectory, ainsi que le nom d'utilisateur qui sera utilisé comme identité dans PowerShell Universal.
Mis à jour
Ce contenu vous a-t-il été utile ?