diff --git a/Documentation/.gitignore b/Documentation/.gitignore new file mode 100644 index 0000000..d35112a --- /dev/null +++ b/Documentation/.gitignore @@ -0,0 +1,23 @@ +######################### +# Git +# global ignore file +######################## +# ignoring temporary files (left by e.g. vim) +# ignoring by common IDE's used directories/files +# dont ignore .rej and .orig as we want to see/clean files after conflict resolution +# +# for local exclude patterns please edit .git/info/exclude +# +*~ +*.bak +*.idea +*.project +*.swp +.buildpath +.cache +.project +.session +.settings +.TemporaryItems +.webprj +nbproject diff --git a/Documentation/Administration/ConfiguringTypo3FeloginExtensionToUseYubikey/Index.rst b/Documentation/Administration/ConfiguringTypo3FeloginExtensionToUseYubikey/Index.rst new file mode 100644 index 0000000..113fd02 --- /dev/null +++ b/Documentation/Administration/ConfiguringTypo3FeloginExtensionToUseYubikey/Index.rst @@ -0,0 +1,39 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Configuring TYPO3 felogin extension to use YubiKey +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you have enables YubiKey Authentication for frontend users, you +have to add an extra field to your felogin template. + +First you have to configure felogin, so it uses an own template. + +styles.content.loginform.templateFile = +fileadmin/templates/ext\_felogin/template.html + +Then you must add the following HTML to the ###TEMPLATE\_LOGIN### +section right after the password field.:: + +
+ + +
+ +Finally, you can add your own CSS Styles to the new field, so it looks +like a YubiKey enabled input field. + diff --git a/Documentation/Administration/Index.rst b/Documentation/Administration/Index.rst new file mode 100644 index 0000000..ddf5f5b --- /dev/null +++ b/Documentation/Administration/Index.rst @@ -0,0 +1,29 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Administration +-------------- + + +.. toctree:: + :maxdepth: 5 + :titlesonly: + :glob: + + SettingTheYubicoApiKey/Index + ConfiguringTypo3FeloginExtensionToUseYubikey/Index + diff --git a/Documentation/Administration/SettingTheYubicoApiKey/Images.txt b/Documentation/Administration/SettingTheYubicoApiKey/Images.txt new file mode 100644 index 0000000..32e936b --- /dev/null +++ b/Documentation/Administration/SettingTheYubicoApiKey/Images.txt @@ -0,0 +1,6 @@ +.. |ext-settings| image:: ../../Images/yubikey-ext-settings.png + :height: 870 + :width: 584 +.. :align: left +.. :border: 0 +.. :name: Extension settings diff --git a/Documentation/Administration/SettingTheYubicoApiKey/Index.rst b/Documentation/Administration/SettingTheYubicoApiKey/Index.rst new file mode 100644 index 0000000..e678002 --- /dev/null +++ b/Documentation/Administration/SettingTheYubicoApiKey/Index.rst @@ -0,0 +1,36 @@ +.. include:: Images.txt + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Setting the Yubico API Key +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +After installing the extension from the extension repository, you need +to configure the extension settings. The authentication process only +works, if you provide a Yubico API Key, which can by obtained at +`https://upgrade.yubico.com/getapikey/ +`_ + +The Yubico API Key is necessary to use the free YubiCloud OTP +validation service. + +After you have obtained your Yubico API Key, enter the Client ID and +the Client Key in the extension settings. + +|ext-settings| + +Extension settings for the Yubico API Key + diff --git a/Documentation/Configuration/Index.rst b/Documentation/Configuration/Index.rst new file mode 100644 index 0000000..95c70bf --- /dev/null +++ b/Documentation/Configuration/Index.rst @@ -0,0 +1,136 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Configuration +------------- + +The extension can be configured in the extension settings from the +extension manager. Besides the Yubico API Key and the Client ID, there +are four other settings that can be configured. + +.. t3-field-list-table:: + :header-rows: 1 + + - :Property: + Property: + + :Date type: + Data type: + + :Description: + Description: + + :Default: + Default: + + - :Property: + yubikeyEnableBE + + :Date type: + boolean + + :Description: + Enable YubiKey authentication for TYPO3 backend users + + :Default: + True + + - :Property: + yubikeyEnableFE + + :Date type: + boolean + + :Description: + Enable YubiKey authentication for TYPO3 backend users + + :Default: + False + + - :Property: + yubikeyUseSSL + + :Date type: + boolean + + :Description: + Uses SSL to communicate with the YubiCloud authentication servers. Only respected, if [usePear] is enabled. + + :Default: + True + + - :Property: + usePear + + :Date type: + boolean + + :Description: + If checked, the YubiKey pear library will be used to validate YubiKey OTPs. Since version 0.7.0, the + extension contains a native YubiKey OTP validation through Yubico API server configured in [yubikeyApiUrl] + If you enable this option, make sure that pear is available on you server! + + :Default: + False + + - :Property: + devlog + + :Date type: + boolean + + :Description: + Writes debugging messages to the TYPO3 devlog + + :Default: + False + + - :Property: + yubikeyClientId + + :Date type: + string + + :Description: + Your Yubico API Client ID + + :Default: + Empty + + - :Property: + yubikeyClientKey + + :Date type: + string + + :Description: + Your Yubico API Client Key + + :Default: + Empty + + - :Property: + yubikeyApiUrl + + :Date type: + string + + :Description: + The Yubico API URL to validate YubiKey OTPs + + :Default: + https://api.yubico.com/wsapi/verify \ No newline at end of file diff --git a/Documentation/Images.txt b/Documentation/Images.txt new file mode 100644 index 0000000..653080a --- /dev/null +++ b/Documentation/Images.txt @@ -0,0 +1,11 @@ +.. |img-1| image:: Images/manual_html_72264b4e.png + :height: 44 + :width: 161 +.. :align: left +.. :border: 0 +.. :name: graphics5 +.. :vspace: 57 + +.. |img-2| image:: Images/manual_html_m12b2d25f.gif +.. :align: left + diff --git a/Documentation/Images/yubikey-be-user.png b/Documentation/Images/yubikey-be-user.png new file mode 100644 index 0000000..d9edba7 Binary files /dev/null and b/Documentation/Images/yubikey-be-user.png differ diff --git a/Documentation/Images/yubikey-ext-settings.png b/Documentation/Images/yubikey-ext-settings.png new file mode 100644 index 0000000..2c070b7 Binary files /dev/null and b/Documentation/Images/yubikey-ext-settings.png differ diff --git a/Documentation/Images/yubikey-login.png b/Documentation/Images/yubikey-login.png new file mode 100644 index 0000000..c281a6e Binary files /dev/null and b/Documentation/Images/yubikey-login.png differ diff --git a/Documentation/Index.rst b/Documentation/Index.rst new file mode 100644 index 0000000..e74d9f8 --- /dev/null +++ b/Documentation/Index.rst @@ -0,0 +1,70 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + +===================================== +YubiKey two-factor OTP authentication +===================================== + +.. only:: html + +:Classification: + sf_yubikey + +:Version: + |release| + +:Language: + en + +:Description: + YubiKey two-factor OTP authentication + +:Keywords: + yubikey, yubico, two-factor, authentication, service + +:Copyright: + 2012 - 2014 + +:Author: + Torben Hansen + +:Email: + derhansen@gmail.com + +:License: + This document is published under the Open Content License + available from http://www.opencontent.org/opl.shtml + +:Rendered: + |today| + +The content of this document is related to TYPO3, +a GNU/GPL CMS/Framework available from `www.typo3.org `_. + +**Table of Contents** + +.. toctree:: + :maxdepth: 5 + :titlesonly: + :glob: + + Introduction/Index + UsersManual/Index + Administration/Index + Configuration/Index + KnownProblems/Index + To-doList/Index + diff --git a/Documentation/Introduction/Index.rst b/Documentation/Introduction/Index.rst new file mode 100644 index 0000000..5a52b5b --- /dev/null +++ b/Documentation/Introduction/Index.rst @@ -0,0 +1,29 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Introduction +------------ + + +.. toctree:: + :maxdepth: 5 + :titlesonly: + :glob: + + WhatDoesItDo/Index + Screenshots/Index + diff --git a/Documentation/Introduction/Screenshots/Images.txt b/Documentation/Introduction/Screenshots/Images.txt new file mode 100644 index 0000000..269981c --- /dev/null +++ b/Documentation/Introduction/Screenshots/Images.txt @@ -0,0 +1,7 @@ +.. |login| image:: ../../Images/yubikey-login.png + :height: 338 + :width: 470 +.. :align: left +.. :border: 0 +.. :name: YubiKey TYPO3 backend login + diff --git a/Documentation/Introduction/Screenshots/Index.rst b/Documentation/Introduction/Screenshots/Index.rst new file mode 100644 index 0000000..ba4fd92 --- /dev/null +++ b/Documentation/Introduction/Screenshots/Index.rst @@ -0,0 +1,24 @@ +.. include:: Images.txt + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Screenshots +^^^^^^^^^^^ + +|login| + +The YubiKey enabled TYPO3 backend login + diff --git a/Documentation/Introduction/WhatDoesItDo/Index.rst b/Documentation/Introduction/WhatDoesItDo/Index.rst new file mode 100644 index 0000000..40a0eea --- /dev/null +++ b/Documentation/Introduction/WhatDoesItDo/Index.rst @@ -0,0 +1,35 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +What does it do? +^^^^^^^^^^^^^^^^ + +This extension is an authentication service for TYPO3 which extends +the frontend and backend login process by strong two-factor +authentication. + +The two-factor authentication is provided by a TYPO3 users username +and password combined with a OTP (one time password) which is +generated by a YubiKey (a physical USB-key) + +A YubiKey enabled user has to enter his username, password and a OTP +to login to the TYPO3 backend and/or frontend. + +More information about the YubiKey, Yubico and the YubiCloud OTP +validation service can be found at `http://www.yubicom.com +`_ + diff --git a/Documentation/KnownProblems/Index.rst b/Documentation/KnownProblems/Index.rst new file mode 100644 index 0000000..95b8026 --- /dev/null +++ b/Documentation/KnownProblems/Index.rst @@ -0,0 +1,28 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Known problems +-------------- + +None at the moment. + +If you think you have found a bug, please report it at forge. + +`https://github.com/derhansen/sf\_yubikey +`_ + + diff --git a/Documentation/To-doList/Index.rst b/Documentation/To-doList/Index.rst new file mode 100644 index 0000000..8c2d8da --- /dev/null +++ b/Documentation/To-doList/Index.rst @@ -0,0 +1,27 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +To-Do list +---------- + +- Enable the use of an own Yubico validation server + +If you have additional wished, feel free to report them at +`https://github.com/derhansen/sf\_yubikey +`_ + + diff --git a/Documentation/UsersManual/Index.rst b/Documentation/UsersManual/Index.rst new file mode 100644 index 0000000..38f6968 --- /dev/null +++ b/Documentation/UsersManual/Index.rst @@ -0,0 +1,35 @@ + + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Users manual +------------ + +The usage of the two-factor authentication is very easy. You can enable +each individual backend and frontend user to use the two-factor +authentication process. + +After the extension is installed, there is a new tab in the user +settings where you can enable the YubiKey two-factor authentication. + + +.. toctree:: + :maxdepth: 5 + :titlesonly: + :glob: + + UserSettings/Index + diff --git a/Documentation/UsersManual/UserSettings/Images.txt b/Documentation/UsersManual/UserSettings/Images.txt new file mode 100644 index 0000000..beaaa25 --- /dev/null +++ b/Documentation/UsersManual/UserSettings/Images.txt @@ -0,0 +1,7 @@ +.. |be-user-settings| image:: ../../Images/yubikey-be-user.png + :height: 291 + :width: 469 +.. :align: left +.. :border: 0 +.. :name: Backend user settings + diff --git a/Documentation/UsersManual/UserSettings/Index.rst b/Documentation/UsersManual/UserSettings/Index.rst new file mode 100644 index 0000000..a308571 --- /dev/null +++ b/Documentation/UsersManual/UserSettings/Index.rst @@ -0,0 +1,35 @@ +.. include:: Images.txt + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +User settings +^^^^^^^^^^^^^ + +To enable the YubiKey two-factor authentication for a user, just edit +the user in the TYPO3 backend and enable the checkbox as shown below. + +|be-user-settings| + +Next you have to enter the YubiKey ID, which is the unique ID of the YubiKey USB +key. To get the ID, just insert your YubiKey into a free USB port and press the button +on the YubiKey. Now a YubiKey OTP will be inserted in the textfield. Don't care, that the +textfield will show the whole YubiKey OPT. The authentication process will automatically +extract the YubiKey ID from the OTP. + +If you have multiple YubiKey devices, you can save the YubiKey ID of each +device in the textfield. Remember to use a new line for each YubiKey ID. + + diff --git a/doc/manual.sxw b/doc/manual.sxw deleted file mode 100644 index 360acf3..0000000 Binary files a/doc/manual.sxw and /dev/null differ diff --git a/doc/wizard_form.dat b/doc/wizard_form.dat deleted file mode 100644 index 5bacf9c..0000000 --- a/doc/wizard_form.dat +++ /dev/null @@ -1 +0,0 @@ -a:4:{s:4:"save";a:3:{s:13:"extension_key";s:10:"sf_yubikey";s:18:"print_wop_comments";s:1:"0";s:15:"overwrite_files";a:10:{s:9:"ChangeLog";s:1:"1";s:10:"README.txt";s:1:"1";s:12:"ext_icon.gif";s:1:"1";s:17:"ext_localconf.php";s:1:"1";s:19:"doc/wizard_form.dat";s:1:"1";s:20:"doc/wizard_form.html";s:1:"1";s:30:"sv1/class.tx_sfyubikey_sv1.php";s:1:"1";s:14:"ext_tables.php";s:1:"1";s:14:"ext_tables.sql";s:1:"1";s:16:"locallang_db.xml";s:1:"1";}}s:6:"emconf";a:1:{i:1;a:7:{s:5:"title";s:26:"Yubikey OTP Authentication";s:11:"description";s:0:"";s:8:"category";s:8:"services";s:5:"state";s:5:"alpha";s:12:"dependencies";s:0:"";s:6:"author";s:13:"Torben Hansen";s:12:"author_email";s:23:"derhansen@gmail.com";}}s:2:"sv";a:1:{i:1;a:8:{s:5:"title";s:26:"Yubikey OTP Authentication";s:11:"description";s:0:"";s:4:"type";s:4:"auth";s:7:"subtype";s:10:"authUserBE";s:8:"priority";s:2:"60";s:7:"quality";s:2:"60";s:2:"os";s:0:"";s:4:"exec";s:0:"";}}s:6:"fields";a:1:{i:1;a:3:{s:11:"which_table";s:8:"be_users";s:5:"title";s:24:"be_users (Backend Users)";s:6:"fields";a:3:{i:2;a:6:{s:9:"fieldname";s:14:"yubikey_enable";s:5:"title";s:29:"Enable Yubikey authentication";s:4:"type";s:5:"check";s:12:"excludeField";s:1:"0";s:7:"_DELETE";s:1:"0";s:18:"conf_check_default";s:1:"0";}i:3;a:14:{s:9:"fieldname";s:12:"yubikey_mode";s:5:"title";s:27:"Yubikey authentication mode";s:4:"type";s:5:"radio";s:12:"excludeField";s:1:"0";s:7:"_DELETE";s:1:"0";s:18:"conf_select_item_0";s:26:"Yubikey OTP authentication";s:23:"conf_select_itemvalue_0";s:1:"0";s:18:"conf_select_item_1";s:56:"Two-Factor authentication (TYPO3 Password + Yubikey OTP)";s:23:"conf_select_itemvalue_1";s:1:"1";s:18:"conf_select_item_2";s:0:"";s:23:"conf_select_itemvalue_2";s:1:"2";s:18:"conf_select_item_3";s:0:"";s:23:"conf_select_itemvalue_3";s:1:"3";s:17:"conf_select_items";s:1:"2";}i:1;a:9:{s:9:"fieldname";s:10:"yubikey_id";s:5:"title";s:10:"Yubikey ID";s:4:"type";s:5:"input";s:12:"excludeField";s:1:"0";s:7:"_DELETE";s:1:"0";s:9:"conf_size";s:2:"12";s:8:"conf_max";s:2:"12";s:13:"conf_required";s:1:"0";s:12:"conf_varchar";s:1:"0";}}}}} \ No newline at end of file diff --git a/doc/wizard_form.html b/doc/wizard_form.html deleted file mode 100644 index 05a4e98..0000000 --- a/doc/wizard_form.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Untitled - - - - -
General info
Enter general information about the extension here: Title, description, category, author...
Title:
Description:
Category:
State
Dependencies (comma list of extkeys):
Author Name:
Author email:

Extend existing Tables
Add custom fields to existing tables, such as the "pages", "tt_content", "fe_users" or "be_users" table.
Which table:
(What is this?)
FIELD: yubikey_enable
- - - -
Field name: (Remove:)
Field title: [English]
Field type: Is Exclude-field (What is this?)

Checked by default
FIELD: yubikey_mode
- - - -
Field name: (Remove:)
Field title: [English]
Field type: Is Exclude-field (What is this?)


Define values:
- - - - - - - - -
Item label:Item value:
[English]
[English]

Number of values
FIELD: yubikey_id
- - - -
Field name: (Remove:)
Field title: [English]
Field type: Is Exclude-field (What is this?)

Field width (5-48 relative, 30 default)
Max characters
Required


Create VARCHAR, not TINYTEXT field
NEW FIELD:
- - - -
Field name:
Field title: [English]
Field type: Is Exclude-field (What is this?)


Load preset fields:

Services
Create a Services class. With a Services extension you can extend TYPO3 (or an extension which use Services) with functionality, without any changes to the code which use that service.
Title:
Description:
 
Service type:

Enter here the key to define which type of service this should be.
Examples: "textExtract", "metaExtract".
Sub type(s) (comma list):

Possible subtypes are defined by the service type.
You have read the service type documentation.
Example: using subtypes for file types (doc, txt, pdf, ...) the service might work for.
 
Priority:

50 = medium priority.
The priority of services can be changed by admin configuration.
Quality:

The numbering of the quality is defined by the service type.
You have read the service type documentation.
The default quality range is 0-100.
 
Operating System dependency:
External program(s) (comma list):

Program(s) needed to run this service (eg. "perl").
- - \ No newline at end of file diff --git a/locallang_db.xml b/locallang_db.xml index 0affb44..0952a2c 100644 --- a/locallang_db.xml +++ b/locallang_db.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file