Closed johnfelipe closed 11 years ago
Check the configuration file of your userregistration module --> module_userregistration.php, new params are required (compare your config with the config that is available in the config-template folder.
i change:
'user.realm' => 'felipeurrego.com', 'admin.dn' => 'cn=admin,dc=felipeurrego,dc=com', 'admin.pw' => 'pwd', // Set the correct ldap admin password
what i have change more?
@johnfelipe if I were you, I'd just redo the module_userregistration.php
using the provided template. There have been lots of changes since some weeks ago.
BTW you should have have a look at what your logs say about metarefresh problems.
Hi, tnks for you advice, but problem persist, upload the file and tell me how is wrong, \var\www\idp\simplesamlphp\config:
<?php
/**
* The configuration of userregistration module
*/
$config = array (
/* The authentication source that should be used. */
'auth' => 'userregistration-ldap',
/* The authentication source for admin views. */
'admin.auth' => 'admin',
// Realm for eduPersonPrincipalName
'user.realm' => 'felipeurrego.com',
// Usen in mail and on pages
'system.name' => 'User registration module',
// Mail options
'mail' => array(
'token.lifetime' => (3600*24*5),
'from' => 'Example <na@felipeurrego.com>',
'replyto' => 'Example <na@felipeurrego.com>',
'subject' => 'Example - email verification',
'admin_create_subject' => 'Example - user account created',
'admin_modify_subject' => 'Example - user account modified',
),
// URL of the Terms of Service
'tos' => 'https://idp.felipeurrego.com/simplesaml/module.php/userregistration/TOS.txt',
'custom.navigation' => TRUE, // Let it as TRUE
// User storage backend selector
'storage.backend' => 'LdapMod',
// LDAP backend configuration
// This is configured in authsources.php
// FIXME: The name of this arrays shoud be the same as storage.backend value
'ldap' => array(
'admin.dn' => 'cn=admin,dc=felipeurrego,dc=com',
'admin.pw' => 'esto se cambia', // Set the correct ldap admin password
// Storage User Id indicate which of the attributes
// that is the key in the storage
// This relates to the attributs mapping
'user.id.param' => 'uid',
//'user.id.param' => 'cn',
// Password encryption
// plain, md5, sha1
'psw.encrypt' => 'sha1',
// Field user to save the registration email of the user
'user.register.email.param' => 'mail',
// Fields that contain a valid email to recover the password
// (Sometimes is needed to be able to send recover password mail to a different email than the register email,
// For example if the Mail-System of the registered mail is protected by the IdP)
'recover.pw.email.params' => array('mail','irisMailMainAddress'),
// Password policy
'password.policy' => array(
'min.length' => 7,
'require.lowercaseUppercase' => true,
'require.digits' => true,
// Require that password contains a non alphanumeric letter.
'require.any.non.alphanumerics' => true,
// Check if password contains the user values of the params of the array. Empty array to don't check
'no.contains' => array('uid','givenName', 'sn'),
// Dictionay filenames inside hooks folder. Empty array to don't check
'check.dicctionaries' => array('dict1.txt'),
),
// LDAP objectClass'es
'objectClass' => array(
'inetOrgPerson',
'organizationalPerson',
'person',
'top',
'eduPerson',
'irisPerson',
'norEduPerson'
),
// Multivalued attributes we want to retrieve as arrays
'multivalued.attributes' => array(
'eduPersonAffiliation',
'irisMailAlternateAddress',
),
), // end Ldap config
// AWS SimpleDB configuration
// SQL backend configuration
// Password policy enforcer
// Inspiration and backgroud
// http://www.hq.nasa.gov/office/ospp/securityguide/V1comput/Password.htm
/*
* Mapping from the Storage backend field names to web frontend field names
*/
'attributes' => array(
'uid' => 'uid',
'givenName' => 'givenName',
'sn' => 'sn',
// Will be a combination for givenName and sn.
'cn' => 'cn',
'mail' => 'mail',
'oldmail' => 'irisMailAlternateAddress',
// uid and appended realm
'eduPersonPrincipalName' => 'eduPersonPrincipalName',
// Set from password walidataion and encryption
'userPassword' => 'userPassword',
),
/*
* Search options
*/
'search' => array(
'min_length' => 3, // Minimum string length allowed
'filter' => '*%STRING%*',
// Searchable attributes
// Use same names from recognized attributes (case sensitive)
'searchable' => array(
'cn',
'sn',
'mail',
),
'pagination' => true,
'elems_per_page' => 20,
),
/*
* Configuration for the field in the web frontend
* This controlls the order of the fields
*
* Valid values for 'show', 'read_only' and 'optional' settings
*
* 'new_user': user tries to register by himself
* 'edit_user': user tries to update his account details
* 'admin_new_user': admin user creation form
* 'admin_edit_user': admin account modification form
* 'first_password': user is setting his own password after registering
* 'change_password': user is changing his password
* 'change_mail': user is changing his mail
*/
'formFields' => array(
// UID
'uid' => array(
'validate' => array(
'filter' => FILTER_VALIDATE_REGEXP,
'options' => array("regexp"=>"/^[a-z]{1}[a-z0-9\-]{2,15}$/")
),
'layout' => array(
'control_type' => 'text',
'show' => array(
'new_user',
'edit_user',
'admin_new_user',
),
'read_only' => array(
'edit_user',
),
),
), // end uid
'givenName' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => array(
'new_user',
'edit_user',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
),
), // end givenName
// Surname (ldap: sn)
'sn' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => array(
'new_user',
'edit_user',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
),
), // end ename
'mail' => array(
'validate' => FILTER_VALIDATE_EMAIL,
'layout' => array(
'control_type' => 'text',
'show' => array(
'new_user',
'edit_user',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
'edit_user',
),
),
), // end mail
// Common name: read only
'cn' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'size' => '35',
'show' => array(
'new_user',
'edit_user',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
),
), // end cn
// eduPersonPrincipalName
'eduPersonPrincipalName' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => array(
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
),
), // end eduPersonPrincipalName
'eduPersonAffiliation' => array(
'validate' => array(
'filter' => FILTER_DEFAULT,
'flags' => FILTER_REQUIRE_ARRAY,
),
'layout' => array(
'control_type' => 'multivalued',
'show' => array(
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
),
), // end eduPersonAffiliation
'userPassword' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
'show' => array(
'first_password',
'change_password',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
'optional' => array(
'admin_edit_user',
),
),
),
'pw1' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
'show' => array(
'change_password',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
'optional' => array(
'admin_edit_user',
),
),
),
'pw2' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
'show' => array(
'change_password',
'admin_new_user',
'admin_edit_user',
),
'read_only' => array(
),
'optional' => array(
'admin_edit_user',
),
),
),
'oldpw' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
'show' => array(
'change_password',
),
'read_only' => array(
),
),
),
'newmail' => array(
'validate' => FILTER_VALIDATE_EMAIL,
'layout' => array(
'control_type' => 'text',
'show' => array(
'change_mail',
),
'read_only' => array(
),
),
),
),
// Known mail services
// Used to show a direct link to the inbox after registering a new account
'known.email.providers' => array(
array(
'name' => 'GMail',
'regexp' => '/g(oogle)?mail.com/',
'url' => 'http://www.gmail.com',
'image' => 'gmail.png',
),
array(
'name' => 'Outlook',
'regexp' => '/(hotmail|outlook).com/',
'url' => 'http://www.outlook.com',
'image' => 'outlook.png',
),
),
// Extra storage. Use redis, mongodb
'extraStorage.backend' => 'redis',
'redis' => array(
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
),
'mongodb' => array(
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
),
);
and old is this:
<?php
$config = array (
'auth' => 'ldap',
'user.realm' => 'felipeurrego.com',
'system.name' => 'OpenMOOC',
// Mailtoken valid for 5 days
'mailtoken.lifetime' => (3600*24*6),
'mail.from' => 'OpenMOOC <no-reply@felipeurrego.com>',
'mail.replyto' => 'OpenMOOC <no-reply@felipeurrego.com>',
'mail.subject' => 'OpenMOOC - verification',
// URL of the Terms of Service
'tos' => 'https://idp.felipeurrego.com/simplesaml/module.php/userregistration/TOS.txt',
'custom.navigation' => TRUE, // Let it as TRUE
'storage.backend' => 'LdapMod',
// LDAP backend configuration
// This is configured in authsources.php
// FIXME: The name of this arrays shoud be the same as storage.backend value
'ldap' => array(
'admin.dn' => 'cn=admin,dc=felipeurrego,dc=com',
'admin.pw' => 'esto se cambia', // Set the correct ldap admin password
// Storage User Id indicate which of the attributes
// that is the key in the storage
// This relates to the attributs mapping
'user.id.param' => 'mail',
// Password encryption
// plain, md5, sha1
'psw.encrypt' => 'sha1',
// Field user to save the registration email of the user
'user.register.email.param' => 'mail',
// Fields that contain a valid email to recover the password
// (Sometimes is needed to be able to send recover password mail to a different email than the register email,
// For felipeurrego if the Mail-System of the registered mail is protected by the IdP)
'recover.pw.email.params' => array('mail'),
// Password policy
'password.policy' => array(
'min.length' => 5,
'require.lowercaseUppercase' => false,
'require.digits' => true,
// Require that password contains a non alphanumeric letter.
'require.any.non.alphanumerics' => false,
// Check if password contains the user values of the params of the array. Empty array to don't check
'no.contains' => array(),
// Dictionay filenames inside hooks folder. Empty array to don't check
'check.dicctionaries' => array(),
),
// LDAP objectClass'es
'objectClass' => array(
'inetOrgPerson',
'person',
'top',
'eduPerson',
),
), // end Ldap config
// AWS SimpleDB configuration
// SQL backend configuration
// Password policy enforcer
// Inspiration and backgroud
// http://www.hq.nasa.gov/office/ospp/securityguide/V1comput/Password.htm
// Mapping from the Storage backend field names to web frontend field names
// This also indicate which user attributes that will be saved
'attributes' => array(
'cn' => 'cn',
'sn' => 'sn',
'mail' => 'mail',
),
// Configuration for the field in the web frontend
// This controlls the order of the fields
'formFields' => array(
'cn' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => true,
'read_only' => false,
'size' => '35',
),
),
'sn' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => true,
'read_only' => false,
),
),
'mail' => array(
'validate' => FILTER_VALIDATE_EMAIL,
'layout' => array(
'control_type' => 'text',
'show' => false,
'read_only' => true,
),
),
'eduPersonAffiliation' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'text',
'show' => false,
'read_only' => true,
),
),
'userPassword' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
),
),
'pw1' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
),
),
'pw2' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
),
),
'oldpw' => array(
'validate' => FILTER_DEFAULT,
'layout' => array(
'control_type' => 'password',
),
),
),
);
@johnfelipe perhaps this has nothing to do with the configuration. Do you have redis/mongodb running? The module now uses one of them to store the tokens. There is no configuration needed for neither of them, just make pick one, make sure it's running and set extraStorage.backend
to the right value.
You'll also need to install php-redis or php-mongo to be able to use them.
Hi again:
[root@felipeurrego ~]# service mongod status
mongod (pid 1811) is running...
in
/var/www/idp/simplesamlphp/config/module_userregistration.php
I change to:
// Extra storage. Use redis, mongodb
'extraStorage.backend' => 'mongodb',
restart httpd
[root@felipeurrego ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
put
touch /var/www/idp/simplesamlphp/modules/userregistration/enable
Check
https://idp.domainorexample.com/simplesaml/module.php/metarefresh/fetch.php
All good
I follow this step:
http://madcoda.com/2012/12/install-mongodb-php-driver-in-centos-6-3/
all good
and
https://f.cloud.github.com/assets/428820/569059/bb97d852-c6ef-11e2-9011-f69dff25dd6c.png
Help please
You forgot to include the full exception stack trace, which should mention what did exactly happen.
where i get and apologise
You can find it in the error screen, and also in the logs/
directory. Just search the provided tracking number.
Hi:
If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator: 8771e01253
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] Backtrace:
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:180 (N/A)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] Caused by: Exception: /var/www/idp/simplesamlphp/config/authsources.php: Could not retrieve the required option 'userregistration-ldap'
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] Backtrace:
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 5 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:316 (SimpleSAML_Configuration::getValue)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 4 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:686 (SimpleSAML_Configuration::getArray)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 3 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:58 (sspmod_userregistration_Storage_UserCatalogue::instantiateLdapStorage)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 2 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:27 (sspmod_userregistration_Storage_UserCatalogue::instantiateStorage)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 1 /var/www/idp/simplesamlphp/modules/userregistration/www/newUser.php:19 (require)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:135 (N/A)
Jun 6 13:42:59 felipeurrego simplesamlphp[1892]: 3 [8771e01253] Error report with id c4f35207 generated.
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] Backtrace:
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:180 (N/A)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] Caused by: Exception: /var/www/idp/simplesamlphp/config/authsources.php: Could not retrieve the required option 'userregistration-ldap'
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] Backtrace:
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 5 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:316 (SimpleSAML_Configuration::getValue)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 4 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:686 (SimpleSAML_Configuration::getArray)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 3 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:58 (sspmod_userregistration_Storage_UserCatalogue::instantiateLdapStorage)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 2 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:27 (sspmod_userregistration_Storage_UserCatalogue::instantiateStorage)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 1 /var/www/idp/simplesamlphp/modules/userregistration/www/newUser.php:19 (require)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:135 (N/A)
Jun 6 13:43:06 felipeurrego simplesamlphp[1802]: 3 [8771e01253] Error report with id 65291f81 generated.
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] Backtrace:
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:180 (N/A)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] Caused by: Exception: /var/www/idp/simplesamlphp/config/authsources.php: Could not retrieve the required option 'userregistration-ldap'
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] Backtrace:
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 5 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:316 (SimpleSAML_Configuration::getValue)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 4 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:686 (SimpleSAML_Configuration::getArray)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 3 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:58 (sspmod_userregistration_Storage_UserCatalogue::instantiateLdapStorage)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 2 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:27 (sspmod_userregistration_Storage_UserCatalogue::instantiateStorage)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 1 /var/www/idp/simplesamlphp/modules/userregistration/www/newUser.php:19 (require)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:135 (N/A)
Jun 6 13:46:24 felipeurrego simplesamlphp[1800]: 3 [8771e01253] Error report with id 77cae624 generated.
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] Backtrace:
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:180 (N/A)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] Caused by: Exception: /var/www/idp/simplesamlphp/config/authsources.php: Could not retrieve the required option 'userregistration-ldap'
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] Backtrace:
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 5 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:316 (SimpleSAML_Configuration::getValue)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 4 /var/www/idp/simplesamlphp/lib/SimpleSAML/Configuration.php:686 (SimpleSAML_Configuration::getArray)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 3 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:58 (sspmod_userregistration_Storage_UserCatalogue::instantiateLdapStorage)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 2 /var/www/idp/simplesamlphp/modules/userregistration/lib/Storage/UserCatalogue.php:27 (sspmod_userregistration_Storage_UserCatalogue::instantiateStorage)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 1 /var/www/idp/simplesamlphp/modules/userregistration/www/newUser.php:19 (require)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] 0 /var/www/idp/simplesamlphp/www/module.php:135 (N/A)
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] Error report with id 5010c97e generated.
Please help
Tnks
This seems to be the problem:
Jun 6 13:49:57 felipeurrego simplesamlphp[1893]: 3 [8771e01253] Caused by: Exception: /var/www/idp/simplesamlphp/config/authsources.php: Could not retrieve the required option 'userregistration-ldap'
Do you have an authsource called userregistration-ldap
? You have to set the auth
option inside module_userregistration.php
to a valid auth source.
Hi change
'auth' => 'ldap',
But now show me a white page and show nothing
Update with gitpull
cd /var/www/idp/simplesamlphp/modules/userregistration
git pull
and this is log console:
remote: Counting objects: 64, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 38 (delta 20), reused 34 (delta 16)
Unpacking objects: 100% (38/38), done.
From https://github.com/OpenMOOC/userregistration
349da95..fc72d60 master -> origin/master
Updating 349da95..fc72d60
Fast-forward
config-templates/module_userregistration.php | 25 ++--
doc/configuration.md | 152 ++++++++++++++++++++++++++
doc/installation.md | 31 +++++
lib/ExtraData/AccountCreationToken.php | 30 +++---
lib/ExtraData/Base.php | 8 +-
lib/ExtraData/GotoURL.php | 30 ++++--
lib/ExtraData/MailChangeToken.php | 46 +++++---
lib/ExtraData/PasswordChangeToken.php | 15 +++
lib/ExtraStorage.php | 42 -------
lib/ExtraStorage/IDriver.php | 7 +
lib/ExtraStorage/Manager.php | 34 ++++++
lib/ExtraStorage/Mongodb.php | 83 ++++++++++++++
lib/ExtraStorage/Redis.php | 43 +++++---
lib/Registration.php | 57 ++++------
lib/TokenGenerator.php | 34 +++++-
www/changeMail.php | 12 +-
www/lostPassword.php | 40 +++++--
www/newUser.php | 2 -
18 files changed, 524 insertions(+), 167 deletions(-)
create mode 100644 doc/configuration.md
create mode 100644 doc/installation.md
create mode 100644 lib/ExtraData/PasswordChangeToken.php
delete mode 100644 lib/ExtraStorage.php
create mode 100644 lib/ExtraStorage/IDriver.php
create mode 100644 lib/ExtraStorage/Manager.php
create mode 100644 lib/ExtraStorage/Mongodb.php
I fetch and all good
but this is new error:
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] Backtrace:
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 0 /var/www/idp/simplesamlphp/www/module.php:180 (N/A)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] Caused by: MongoConnectionException: Failed to connect to: tcp:0: Connection timed out
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] Backtrace:
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 5 /var/www/idp/simplesamlphp/modules/userregistration/lib/ExtraStorage/Mongodb.php:10 (MongoClient::__construct)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 4 /var/www/idp/simplesamlphp/modules/userregistration/lib/ExtraStorage/Mongodb.php:10 (sspmod_userregistration_ExtraStorage_Mongodb::__construct)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 3 /var/www/idp/simplesamlphp/modules/userregistration/lib/ExtraStorage/Manager.php:25 (sspmod_userregistration_ExtraStorage_Manager::getInstance)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 2 /var/www/idp/simplesamlphp/modules/userregistration/lib/Registration.php:39 (sspmod_userregistration_Registration::__construct)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 1 /var/www/idp/simplesamlphp/modules/userregistration/www/newUser.php:21 (require)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] 0 /var/www/idp/simplesamlphp/www/module.php:135 (N/A)
Jun 6 20:23:48 felipeurrego simplesamlphp[4159]: 3 [9217c0bd24] Error report with id e474638c generated.
Do you have a MongoDB instance running? Is it actually working?
Hi, yes i review status and running
Have a look at this:
Failed to connect to: tcp:0: Connection timed out
There seems to be something wrong with your MongoDB connection settings. Please, make sure you're trying to connect to the same IP your MongoDB instance is bound to, and check for any iptables rules that might be blocking this connection.
This is my saml_setting.py:
import saml2
import os
BASEDIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
SAML2_DIR = "/var/www/moocng/saml2"
SAML_CONFIG = {
# full path to the xmlsec1 binary programm
'xmlsec_binary': '/usr/bin/xmlsec1',
# your entity id, usually your subdomain plus the url to the metadata view
'entityid': 'http://moocng.felipeurrego.com/saml2/metadata/',
# directory with attribute mapping
'attribute_map_dir': os.path.join(SAML2_DIR, 'attribute-maps'),
# this block states what services we provide
'service': {
# we are just a lonely SP
'sp' : {
'name': 'Moocng SP',
'endpoints': {
# url and binding to the assetion consumer service view
# do not change the binding or service name
'assertion_consumer_service': [
('http://moocng.felipeurrego.com/saml2/acs/', saml2.BINDING_HTTP_POST),
],
# url and binding to the single logout service view
# do not change the binding or service name
'single_logout_service': [
('http://moocng.felipeurrego.com/saml2/ls/', saml2.BINDING_HTTP_REDIRECT),
],
},
# in this section the list of IdPs we talk to are defined
'idp': {
# we do not need a WAYF service since there is
# only an IdP defined here. This IdP should be
# present in our metadata
# the keys of this dictionary are entity ids
'https://idp.felipeurrego.com/simplesaml/saml2/idp/metadata.php': {
'single_sign_on_service': {
saml2.BINDING_HTTP_REDIRECT: 'https://idp.felipeurrego.com/simplesaml/saml2/idp/SSOService.php',
},
'single_logout_service': {
saml2.BINDING_HTTP_REDIRECT: 'https://idp.felipeurrego.com/simplesaml/saml2/idp/SingleLogoutService.php',
},
},
},
},
},
# where the remote metadata is stored
'metadata': {
'local': [os.path.join(SAML2_DIR, 'remote_metadata.xml')],
},
# set to 1 to output debugging information
'debug': 1,
# certificate
'key_file': os.path.join(SAML2_DIR, 'certs/server.key'), # private part
'cert_file': os.path.join(SAML2_DIR, 'certs/server.crt'), # public part
# own metadata settings
'contact_person': [
{'given_name': 'Sysadmin',
'sur_name': '',
'company': 'Example CO',
'email_address': 'sysadmin@felipeurrego.com',
'contact_type': 'technical'},
{'given_name': 'Boss',
'sur_name': '',
'company': 'Example CO',
'email_address': 'admin@felipeurrego.com',
'contact_type': 'administrative'},
],
# you can set multilanguage information here
'organization': {
'name': [('Example CO', 'es'), ('Example CO', 'en')],
'display_name': [('Example', 'es'), ('Example', 'en')],
'url': [('http://www.felipeurrego.com', 'es'), ('http://www.felipeurrego.com', 'en')],
},
}
and my common.py:
# Copyright 2012 Rooter Analysis S.L.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Django settings for moocng project.
import os
BASEDIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
#BASEDIR = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
TEMPLATE_DEBUG = DEBUG
FFMPEG_DEBUG = DEBUG
ADMINS = (
('Admin', 'email aqui'),
)
MANAGERS = ADMINS
EMAIL_SUBJECT_PREFIX = '[OpenMOOC] | '
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'moocng', # Or path to database file if using sqlite3.
'USER': 'moocng', # Not used with sqlite3.
'PASSWORD': 'contraseña aqui', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
MONGODB_URI = 'mongodb://localhost:27017/moocng'
# Tastypie resource limit per page, 0 means unlimited
API_LIMIT_PER_PAGE = 0
#SMTP server
EMAIL_HOST = 'idp.dominioaqui.com'
SERVER_EMAIL = '127.0.0.1'
DEFAULT_FROM_EMAIL = 'info@dominioaqui.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_SUBJECT_PREFIX = '[OpenMOOC] | '
# Amazon credentials
AWS_ACCESS_KEY_ID = "_____"
AWS_SECRET_ACCESS_KEY = "__________________+3Yl0i/__________"
AWS_STORAGE_BUCKET_NAME = "___________"
AWS_S3_UPLOAD_EXPIRE_TIME = (60 * 5) # 5 minutes
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'Europe/Madrid'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
gettext = lambda s: s
LANGUAGES = (
('en', gettext('English')),
('es', gettext('Spanish')),
)
# the default value is 'django_language' but changing this
# to 'language' makes it easier to integrate with the IdP
LANGUAGE_COOKIE_NAME = 'language'
LOCALE_PATHS = (
os.path.join(BASEDIR, 'locale'),
)
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# Use custom formats
FORMAT_MODULE_PATH = 'moocng.formats'
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
#MEDIA_ROOT = os.path.join(BASEDIR, 'media')
MEDIA_ROOT = '/var/www/moocng/media'
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
#STATIC_ROOT = os.path.join(BASEDIR, 'collected_static')
STATIC_ROOT = '/var/www/moocng/static'
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(BASEDIR, 'static'),
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder'
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
#SECRET_KEY = 'r$=%l$j4(#5a%$rd*g+q5o7!m3z&b@z1+n*d!n2im-hf0n%730'
SECRET_KEY = 'amz84hsmmb31p8cgw2nwqfdolpm80vmz'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'moocng.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'moocng.wsgi.application'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(BASEDIR, 'templates'),
)
COMPRESS_CSS_FILTERS = [
'compressor.filters.css_default.CssAbsoluteFilter',
'compressor.filters.cssmin.CSSMinFilter',
]
COMPRESS_OFFLINE = False
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'grappelli',
'django.contrib.admin',
'django.contrib.flatpages',
'adminsortable',
'djcelery',
'tinymce',
'tastypie',
'compressor',
'moocng.contact',
'moocng.badges', # this must be defined before moocng.courses
'moocng.courses',
'moocng.assets',
'moocng.portal',
'moocng.videos',
'moocng.teacheradmin',
'moocng.enrollment',
'moocng.api',
'moocng.categories',
'moocng.peerreview',
'djangosaml2',
'south',
'django_mathjax',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'moocng.media_contents',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false'],
},
},
'loggers': {
'django.request': {
'handlers': ['console', 'mail_admins'],
'level': 'DEBUG',
'propagate': True,
},
'moocng.videos.download': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
'propagate': True,
},
'moocng.videos.tasks': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
'propagate': True,
},
'moocng.courses.admin': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
'propagate': True,
},
}
}
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.tz',
# 'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
'moocng.context_processors.site',
'moocng.context_processors.theme',
'moocng.context_processors.extra_settings',
'moocng.context_processors.idp_urls',
'moocng.context_processors.google_analytics',
'moocng.context_processors.certificate_url',
)
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'moocng.courses.backends.Saml2BackendExtension',
)
FIXTURE_DIRS = (
os.path.join(BASEDIR, 'fixtures', 'django.contrib.flatpages'),
os.path.join(BASEDIR, 'fixtures', 'django.contrib.auth'),
)
TINYMCE_DEFAULT_CONFIG = {
'theme': 'advanced',
'theme_advanced_toolbar_location': 'top',
'theme_advanced_buttons1': 'bold,italic,underline,strikethrough,separator,link,unlink,separator,undo,redo,copy,paste,separator,cleanup,separator,bullist,numlist',
'theme_advanced_buttons2': '',
'theme_advanced_buttons3': '',
}
GOOGLE_ANALYTICS_CODE = ''
GRAVATAR_URL_PREFIX = '//www.gravatar.com/'
MOOCNG_THEME = {
# 'cert_banner': u'',
}
ENABLED_COMUNICATIONS = (
'feedback',
'incidence',
'rights',
'unsubscribe',
'others'
)
#SHOW_TOS = True
FFMPEG = '/usr/bin/ffmpeg'
# Let authenticated users create their own courses
ALLOW_PUBLIC_COURSE_CREATION = False
# Make this unique, and don't share it with anybody else than payment system
# Override this in local settings
USER_API_KEY = '123456789'
# A list with the slugs of the courses that use the old qualification system
# where the normal units counted
#COURSES_USING_OLD_TRANSCRIPT = []
COURSES_USING_OLD_TRANSCRIPT = ['aleman-para-colombianos', 'tics-para-ensenar-y-aprender', 'empieza-con-el-ingles-aprende-las-mil-palabras-mas', 'ingles-profesional-professional-english']
# Enrollment methods
ENROLLMENT_METHODS = (
'moocng.enrollment.methods.FreeEnrollment',
)
# Celery settings
import djcelery
djcelery.setup_loader()
CELERY_CREATE_MISSING_QUEUES = True
BROKER_URL = 'amqp://moocng:dominioaqui@localhost:5672/moocng'
REGISTRY_URL = 'https://idp.dominioaqui.com/simplesaml/module.php/userregistration/newUser.php'
PROFILE_URL = 'https://idp.dominioaqui.com/simplesaml/module.php/userregistration/reviewUser.php'
CHANGEPW_URL = 'https://idp.dominioaqui.com/simplesaml/module.php/userregistration/changePassword.php'
ASKBOT_URL_TEMPLATE = 'https://questions.dominioaqui.com/%s/'
#CERTIFICATE_URL = 'http://dominioaqui.com/idcourse/%(courseid)s/email/%(email)s' # Example, to be overwritten in local settings
CERTIFICATE_URL = 'http://jhondominioaquimejia.com/idcourse/%(courseid)s/image.php?name=%(email)s' # Example, to be overwritten in local settings
MASSIVE_EMAIL_BATCH_SIZE = 30
PEER_REVIEW_TEXT_MAX_SIZE = 5000 # in chars
PEER_REVIEW_FILE_MAX_SIZE = 5 # in MB
PEER_REVIEW_ASSIGNATION_EXPIRE = 24 # in hours
ASSET_SLOT_GRANULARITY = 5 # Slot time of assets should be a multiple of this value (in minutes)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
LOGIN_URL = '/saml2/login/'
LOGIN_REDIRECT_URL = '/'
LOGOUT_URL = '/saml2/logout/'
LOGOUT_REDIRECT_URL = '/'
FREE_ENROLLMENT_CONSISTENT = False
SAML_CREATE_UNKNOWN_USER = True
SAML_ATTRIBUTE_MAPPING = {
'mail': ('username', 'email', ),
'cn': ('first_name', ),
'sn': ('last_name', ),
'eduPersonAffiliation': ('groups', ),
}
from .saml_settings import *
MEDIA_CONTENT_TYPES = [
{
'id': 'youtube',
'name': 'YouTube',
'handler': 'moocng.media_contents.handlers.youtube.YoutubeMediaContentHandler',
'can_get_last_frame': True,
},
{
'id': 'vimeo',
'name': 'Vimeo',
'handler': 'moocng.media_contents.handlers.vimeo.VimeoMediaContentHandler',
'can_get_last_frame': False,
},
{
'id': 'scribd',
'name': 'Scribd',
'handler': 'moocng.media_contents.handlers.scribd.ScribdMediaContentHandler',
'can_get_last_frame': False,
},
{
'id': 'prezi',
'name': 'Prezi',
'handler': 'moocng.media_contents.handlers.prezi.PreziMediaContentHandler',
'can_get_last_frame': False,
},
]
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
},
}
MATHJAX_ENABLED = False
MATHJAX_LOCAL_PATH = STATIC_URL + 'js/libs/mathjax'
MATHJAX_CONFIG_FILE = "TeX-AMS-MML_HTMLorMML"
MATHJAX_CONFIG_DATA = {
"elements": ['false-id-to-not-proccess-by-default'],
"tex2jax": {
"inlineMath": [
['$', '$'],
['\\(', '\\)']
]
}
}
Iptables is off
"iptables: Firewall is not running."
@johnfelipe I think you are confusing userregistration (SSP module, this project) with other pieces of the OpenMOOC project (moocng, askbot).
The configuration file you have to check is module_userregistration.php
, look for the extraStorage.backend
and mongodb
settings.
Yes, but i see all good:
https://github.com/OpenMOOC/userregistration/issues/3#issuecomment-18635419
Please show me directions
Tnks
Hello, finally:
'mongodb' => array(
'scheme' => 'mongodb',
'host' => '127.0.0.1',
'port' => 27017,
'database' => 'idp',
),
);
Tnks for you support
So the problem was that the database
parameter was missing. Glad you found out that!
Hi all,
I update all today and clic:
https://idp.domain.com/simplesaml/module.php/userregistration/newUser.php
and this is error:
normally i clic fetch:
https://idp.domain.com/simplesaml/module.php/metarefresh/fetch.php
and this fine, but persist error, please tell what to do
tnks