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#
| Élément | Rô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 ressource | Dé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. |
| Politique | Dé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é.
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.
Sujets et conditions#
Les sujets désignent à qui la politique s’applique :
| Type | S’applique à |
|---|---|
AuthenticatedUsers | Tout utilisateur authentifié (type proposé par défaut) |
Identity | Des utilisateurs ou des groupes désignés |
JwtClaim | Un appelant dont le jeton OpenID Connect porte une valeur de claim donnée |
NONE | Personne (politique désactivée par ses sujets) |
AND, OR, NOT | Combinaisons logiques des types précédents |
Les conditions d’environnement limitent le contexte :
| Type | Condition |
|---|---|
AuthLevel, LEAuthLevel | Niveau d’authentification de la session au moins égal, ou au plus égal, à une valeur |
AuthScheme, AuthenticateToService, AuthenticateToRealm | Authentification par un module, un service ou dans un royaume donné |
AMIdentityMembership | Appartenance de l’utilisateur à des identités désignées |
LDAPFilter | Entrée de l’utilisateur correspondant à un filtre LDAP |
IPv4, IPv6, ResourceEnvIP | Adresse IP du client |
SimpleTime | Plage horaire, jours ou dates |
Session, SessionProperty | Âge de la session, propriété de session |
OAuth2Scope | Scopes du jeton OAuth2 présenté |
Script | Script serveur |
AND, OR, NOT | Combinaisons 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) :
{
"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 :
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 :
[{
"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