This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
auth:ticket:integratorguide [2017/02/25 14:03] admin [Ticket API] |
auth:ticket:integratorguide [2024/04/04 15:50] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Integrator Guide ===== | + | <html><!-- nomoodle --></html>{{ :logo-apl.png?nolink |}} <html><!-- /nomoodle --></html> |
- | ===== Auth Ticket : Direct access auth ===== | + | |
+ | ===== Ticket based authentication : Integrator Guide===== | ||
+ | =====Ticket Direct Access (to Moodle) plugin===== | ||
+ | |||
+ | ====Introduction==== | ||
This guide is provided for : | This guide is provided for : | ||
Line 10: | Line 14: | ||
This plugin provides the way to some other plugins to send pre-authenticated tickets to users. This addresses a set of security considerations : | This plugin provides the way to some other plugins to send pre-authenticated tickets to users. This addresses a set of security considerations : | ||
+ | |||
+ | === Ticket encryption methods === | ||
+ | |||
+ | This component provides either DES or RSA encryption methods to encode/decode tickets. Administrators must be aware of : | ||
+ | |||
+ | * DES (AES) uses internal Mysql/Maria DB AES_ENCRYP/AES_DECRYPT function that is not available (nor similar) in PostgreSQL. | ||
+ | * RSA is a more compatible method based on openssl underlying layer. Moodle needs have MNET network enabled and a valid local keypair available. The key length should be of 2048 bytes to ensure the ticket payload has sufficiant length to hold the targer urls. Openssl functions claim about length restrictions of the input payload when using 1024 rsa key length. (See http://php.net/manual/en/function.openssl-private-encrypt.php for more information). | ||
=== Ticket validity time === | === Ticket validity time === | ||
Line 30: | Line 41: | ||
==== Ticket API ==== | ==== Ticket API ==== | ||
- | The ticket API is contained in the lib.php. | + | The ticket API is contained in the lib.php. The actual API offers four functions. The former pair are high level notification sending functions using tickets. The latter are low encode/decode function. |
=== function ticket_notify($recipient, $sender, $title, $notification, $notificationhtml, $url, $purpose = '', $term = 'short') === | === function ticket_notify($recipient, $sender, $title, $notification, $notificationhtml, $url, $purpose = '', $term = 'short') === | ||
Line 39: | Line 50: | ||
Only recipients that have a valid Moodle account can use an access tickets. The ticket is only valid on the given return URL and cannot be used for going to another location, unless user's profile other mention. | Only recipients that have a valid Moodle account can use an access tickets. The ticket is only valid on the given return URL and cannot be used for going to another location, unless user's profile other mention. | ||
- | * @param object $recipient | + | @param object $recipient |
- | * @param object $sender | + | @param object $sender |
- | * @param string $title mail subject | + | @param string $title mail subject |
- | * @param string $notification raw content of the mail | + | @param string $notification raw content of the mail |
- | * @param string $notification_html html content of the mail | + | @param string $notification_html html content of the mail |
- | * @param string $url return url of the ticket | + | @param string $url return url of the ticket |
- | * @param string $purpose some textual comment on what the ticket was for | + | @param string $purpose some textual comment on what the ticket was for |
- | * @param bool $term the ticket validity duration, may be 'short', 'long' or 'persistant'. | + | @param bool $term the ticket validity duration, may be 'short', 'long' or 'persistant'. |
+ | |||
+ | === function ticket_notifyrole($roleid, $context, $sender, $title, $notification, $notificationhtml, $url, $purpose = '', $checksendall = false, $term = 'short') === | ||
+ | |||
+ | Send a notification message to all users having the role in the given context. | ||
+ | |||
+ | @param int $roleid id of the role to search users on | ||
+ | @param object $context context in which find users with the role | ||
+ | @param object $sender user identity of the sender | ||
+ | @param string $title mail subject | ||
+ | @param string $notification raw content of the mail | ||
+ | @param string $notification_html html content of the mail | ||
+ | @param string $url return url of the ticket | ||
+ | @param string $purpose some textual comment on what the ticket was for | ||
+ | @param bool $checksendall if true, the function returns true if all the recipients were sucessfull | ||
+ | @param bool $term the ticket validity duration, may be 'short', 'long' or 'persistant'. | ||
+ | @return true if at least one email could be sent or all are sent depending on $checksendall. | ||
+ | |||
+ | === function ticket_generate($user, $reason, $url, $method = 'des', $term = 'short') === | ||
+ | |||
+ | Generates a direct access ticket for this user. | ||
+ | |||
+ | @param int $userid the ID of the user to whom the ticket must be made for | ||
+ | @param string $reason the reason of the ticket | ||
+ | @param string $url the access URL the user will be redirected to after validating his return ticket. | ||
+ | @return the encoded ticket | ||
+ | |||
+ | === function ticket_decode($encrypted, $method = 'des') === | ||
+ | |||
+ | Decodes a direct access ticket for this user. | ||
+ | |||
+ | @param string $encrypted the received ticket | ||
+ | @param string $method the decrypt method. Supports 'des' using DB internal function or 'rsa' using openssl layer. | ||
+ | @return an object containing ticket information. | ||
+ | |||
+ | <html><!-- nomoodle --></html> | ||
+ | ---- | ||
+ | ====Credits==== | ||
+ | * Valéry Frémaux (valery@activeprolearn.com)) Developments, Documentation | ||
+ | * Florence Labord (florence@activeprolearn.com) Documentation | ||
+ | [[auth:ticket|Back to componant index]] - [[:Plugins|Plugins index]] - [[:start|Back to catalogue]] | ||
+ | <html><!-- /nomoodle --></html> |