Concepts

Autorisation

Sur cette page

Après l’authentification, TOSIAM peut aussi décider de l’autorisation : tel sujet peut-il effectuer telle action sur telle ressource ? La décision repose sur des politiques, évaluées à la demande d’un agent de politique placé devant une application, ou d’une application qui interroge directement l’API REST.

Le modèle#

Faites défiler le tableau
ÉlémentRôle
Ensemble de stratégies (application)Regroupe des politiques et fixe les types de ressource qu’elles peuvent viser. Les agents de politique utilisent l’ensemble iPlanetAMWebAgentService (« Default Policy Set »).
Type de ressourceDécrit la forme des ressources (modèles) et les actions possibles. Le type URL accepte les modèles *://*:*/* et *://*:*/*?*, et les actions GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
PolitiqueDésigne des ressources, les actions autorisées ou refusées, à qui elle s’applique (sujets) et dans quel contexte (conditions d’environnement). Elle peut renvoyer des attributs de réponse.

Quand plusieurs politiques visent la même ressource, le combinateur de décisions DenyOverride s’applique : un refus l’emporte sur une autorisation.

Dans la distribution QuickStart, le royaume racine contient l’ensemble « Default Policy Set » et le type URL. Un royaume créé ensuite n’en contient aucun : créez l’ensemble et le type de ressource avant les politiques.

Dans la console#

Le menu Autorisation affiche les ensembles de stratégies et les types de ressource du royaume sélectionné.

Menu Autorisation de la console : onglets Ensembles de stratégies et Types de ressource, ensemble Default Policy Set Menu Autorisation de la console : onglets Ensembles de stratégies et Types de ressource, ensemble Default Policy Set
Les onglets Ensembles de stratégies et Types de ressource (1), et l’ensemble par défaut des agents (2).

Un clic sur un ensemble liste ses politiques ; Nouvelle politique demande un nom, un type de ressource et au moins une ressource. Une ressource se saisit partie par partie à partir du modèle choisi : schéma, hôte, port, chemin, par exemple https://rh.example.com:443/*. La politique se règle ensuite section par section.

Section Actions d'une politique : GET et POST autorisés, les autres actions refusées Section Actions d'une politique : GET et POST autorisés, les autres actions refusées
La section Actions (1) : GET (2) et POST (3) autorisés, les autres actions refusées.
Section Environnements d'une politique : condition Auth Level réglée à 1 Section Environnements d'une politique : condition Auth Level réglée à 1
La section Environnements (1) : une condition de niveau d’authentification minimal (2).

Sujets et conditions#

Les sujets désignent à qui la politique s’applique :

Faites défiler le tableau
TypeS’applique à
AuthenticatedUsersTout utilisateur authentifié (type proposé par défaut)
IdentityDes utilisateurs ou des groupes désignés
JwtClaimUn appelant dont le jeton OpenID Connect porte une valeur de claim donnée
NONEPersonne (politique désactivée par ses sujets)
AND, OR, NOTCombinaisons logiques des types précédents

Les conditions d’environnement limitent le contexte :

Faites défiler le tableau
TypeCondition
AuthLevel, LEAuthLevelNiveau d’authentification de la session au moins égal, ou au plus égal, à une valeur
AuthScheme, AuthenticateToService, AuthenticateToRealmAuthentification par un module, un service ou dans un royaume donné
AMIdentityMembershipAppartenance de l’utilisateur à des identités désignées
LDAPFilterEntrée de l’utilisateur correspondant à un filtre LDAP
IPv4, IPv6, ResourceEnvIPAdresse IP du client
SimpleTimePlage horaire, jours ou dates
Session, SessionPropertyÂge de la session, propriété de session
OAuth2ScopeScopes du jeton OAuth2 présenté
ScriptScript serveur
AND, OR, NOTCombinaisons logiques

Ces listes sont celles que renvoie le serveur (/json/subjecttypes et /json/conditiontypes).

La politique en JSON#

L’API REST représente la politique de l’exemple ainsi (GET /json/policies/acces-portail-rh) :

json
{
  "name": "acces-portail-rh",
  "active": true,
  "applicationName": "iPlanetAMWebAgentService",
  "resources": ["https://rh.example.com:443/*"],
  "actionValues": { "GET": true, "POST": true },
  "subject": { "type": "AuthenticatedUsers" },
  "condition": { "type": "AuthLevel", "authLevel": 1 }
}

Évaluer une politique#

Un agent de politique, ou une application, demande la décision pour un utilisateur à /json/policies?_action=evaluate. L’appel est authentifié par un compte habilité à évaluer les politiques ; le sujet est désigné par son jeton de session :

bash
curl -X POST "https://<serveur>/tosiam/json/policies?_action=evaluate" \
     -H "Content-Type: application/json" \
     -H "Accept-API-Version: protocol=1.0,resource=2.0" \
     -H "iPlanetDirectoryPro: <jeton de l'appelant>" \
     -d '{
           "resources": ["https://rh.example.com:443/conges"],
           "application": "iPlanetAMWebAgentService",
           "subject": { "ssoToken": "<jeton de session de l'utilisateur>" }
         }'

Pour une utilisatrice authentifiée avec le niveau 0, la condition AuthLevel n’est pas remplie :

json
[{
  "resource": "https://rh.example.com:443/conges",
  "actions": {},
  "attributes": {},
  "advices": { "AuthLevelConditionAdvice": ["1"] }
}]

Aucune action n’est accordée, et l’advice indique ce qui manque : un niveau d’authentification de 1. L’agent ou l’application peut alors relancer une authentification plus forte (voir StepUpAuthNode) puis redemander la décision. Une fois la condition remplie, actions contient {"GET": true, "POST": true}.

L’action evaluateTree évalue d’un coup une ressource et toutes ses sous-ressources.

Avec ssoadm#

policy-export et policy-import exportent et importent les politiques d’un royaume au format JSON ; list-xacml et create-xacml font de même au format XACML. Voir la référence des commandes.

Mis à jour le