Hello,
I created a module, that implements DigiD authenticaton in Drupal, it's used in the netherlands by all authorities. It's already approved by DigiD as a good implementation. The english texts are provided and approved by DigiD, there is also a dutch translation available, also approved by DigiD.
It is an great opportunity to spread drupal to the authorities. for more information:
http://www.digid.nl/english/
The module can be found here:
http://www.forceit.nl/digid.tar.gz
| Comment | File | Size | Author |
|---|---|---|---|
| #37 | digid.tar_.gz | 7.44 KB | rikvd |
| #34 | digid.tar_.gz | 7.43 KB | rikvd |
| #25 | digid.tar_.gz | 7.51 KB | rikvd |
| #24 | digid_logo_extern.zip | 271.57 KB | frankschaap |
| #21 | digid.tar_.gz | 6.06 KB | rikvd |
Comments
Comment #1
rikvd commentedmodule attached
Comment #2
rikvd commentedforgot to change the status
Comment #3
Anonymous (not verified) commentedHello, and thanks for applying for a CVS account. I am adding the review tags, and some volunteers will review your code.
As per Apply for contributions CVS access, your motivation message must be expanded, and include a description of the module features, including a comparison with existing modules.
Comment #4
avpadernoI am changing the status as per previous comment.
Comment #5
rikvd commentedfeatures:
- It modifies the user login form so it meets the guidelines required for DigiD acceptance.
- It provides an interface to set all parameters provided by DigiD after signing an non-disclosure agreement
- It verifies the credentials after the user is redirected to the drupal site, based on the result the user will be signed in, or there will be an error according the DigiD guidelines (for administrators there will be detailed information about the error available).
comparance:
there is no other module that implements DigiD authentication.
Comment #6
rikvd commentedComment #7
avpadernoThe code is altering a global variable, which is not probably a good idea; if it just needs to use a different base URL, then it is possible to pass it in the options accepted by
url().The code should call
drupal_set_header()instead ofheader(), and invokemodule_invoke_all('exit')beforeexit().The second argument of the function is a not translated string, which is then translated from the function; use a placeholder, instead of concatenating strings.
The constant doesn't have the correct value.
Comment #8
rikvd commentedshould be fixed now.
Comment #9
avpadernoStrings passed to
t()or as second argument ofwatchdog()must be in American English, because the translation is done from American English to the language set as default language.Comment #10
rikvd commentedthe problem is, that i'm not allowed to do that. it should not be altered. the string is provided by the dutch goverment, and should not be changed. otherwise they don't vertify a correct implementation.
Comment #11
rikvd commentedComment #12
avpadernoEvery strings used in Drupal user interface needs to be translated. If they require you to report a sentence in Dutch, then you still need to provide the translation of that sentence; this means to pass the American English translation to
t().The following code still needs to be changed as per comment #7.
Comment #13
rikvd commentednow with placeholder, I misunderstood the comment in #7
Comment #14
rikvd commentedComment #15
avpadernoOne function call has been changed, but not the others. The call to
watchdog()is not correct (see watchdog()).That line needs to be removed from digid.info.
See http://drupal.org/coding-standards for how the constants, Drupal variables, and functions should be named; that is called namespace respect, and it's a requirement for all the modules.
All the above sentences should use the present perfect (); the sentences should end with a period, and the words should be in sentence case ().
Comment #16
rikvd commentedhere's a new version.
Comment #17
nielsvm commentedI'm interested in this module and wondering if this request is still allive, TIA!
Comment #18
rikvd commentedstill active, waiting for a review.
i will release it ASAP, but i have to wait for the community to review and accept this module.
Comment #19
Jo Wouters commentedThis is a great module; and hosting this module on drupal.org will give a boost to Drupal use in the low countries.
Thanks @rikvd for your effort to release this code!
2 remarks, after I ran through the code from #16
define('DIGID_HASHKEY', '<replace me>');wouldn't it be better to use a parameter that is set in settings.php ? That way a separate hash can be used for separate installations (multisite).Comment #20
nielsvm commentedInstead of a setting in settings.php I'd suggest a variable_set() and a system settings form that enables you to configure the key, once it is set and tested, the user can't change it anymore (or instead of this approach, needs to confirm). Making it able to let the user configure the key lowers the barrier for less tech-savy users like many governemental IT staff to set the key, altering settings.php is a bit more complicated ;).
Good stuff!
niels
Comment #21
rikvd commentedThanks for the review Jo Wouters and nielsvm,
I changed remark 1 as suggested by nielsvm.
remark 2, you're right it was not supposed to be in the zip at all, because it was an empty file. I removed the copyright statement.
Comment #22
frankschaap commentedDigiD authentication is a prerequisite for using Drupal in any and all governmental settings in The Netherlands. This is an important addition for Dutch users.
A couple of remarks:
- the README and admin pages text has no information that this is a module specifically for the Netherlands: "cooperating governmental agencies" is a bit broad. I think you need to mention this fact as it is important for international users who probably have no use for this module.
- you're now setting the hashkey through the admin pages, you need to change the README line 26/27
- is it still required to show the DigiD logo on the webpage where you sign in? This used to be a requirement and I don't see the logo included in the module or being requested from an external url. This might be worth checking in the DigiD documentation.
Comment #23
avpadernoI am changing the status as per previous comment.
Comment #24
frankschaap commentedI've checked the requirements of the latest version of the DigiD communications toolkit (v2.6, 29 jan 2010). Thankfully the quite hideous requirements have been toned down considerably.
Here's what you have to do now. On the page where you link to the DigiD login service:
- you must show this line of text: "Bij [naam_organisatie] kunt u inloggen met uw DigiD."
- you must show the DigiD logo
- the DigiD logo must be clickable and must link to www.digid.nl
The whole line of text in line 157 of the module can be replaced by the above line of text and the logo.
I have attached a zip with the logos in several formats.
Most government websites also provide a link to the DigiD signup page, www.digid.nl/aanvragen/ and I think this is a common courtesy that might be implemented as well. It's not a requirement though.
Other technical requirements (that have no impact on the current module code, just for later reference) are that:
- you may not show the DigiD login pages inside an iframe
- you may not exchange login details with the DigiD authentication service in a way invisible to the user: the user must be redirected to the DigiD login pages on the DigiD servers
Comment #25
rikvd commented- changed the readme as suggested in #22,
- added the Digid logo (clickable) and changed the text.
the link for the signup page was already in.
thanks Muffinboy for all the information and the review.
Comment #26
rikvd commentedHello anyone,
I'm trying to get a CSV-acount for my project since 22-02-2010, I am wondering how long it takes before I can release it to the community, and help other people with it. please review and give some feedback.
Thanks in advance.
Comment #27
heine commentedI've glanced at the code upon bertboerlands instigation:
Comment #28
nick_vhI took a look through the code (without testing) and it looks like a nice drupal module. Code standards are fine so this looks good.
Maybe somebody with the digid card can mark this as reviewed and tested but for a CVS account I'm not sure if this is required.
Comment #29
xanoRelease blockers
Other comments
drupalis rubbish. Something along the lines ofdigid=0would be better.The Digid module requires the <a href="@link">hashkey</a> has been settoThe Digid module requires a <a href="@digid_settings">hashkey</a>. This is better English and the placeholder is self explanatory.l(t('Request DigiD'), 'aanvragen-digid', array('attributes' => array('title' => t('Request DigiD'))))do? It points to/aanvragen-digid, which is not only a non-existing URL path, but the path is also Dutch instead of American English.hook_form_FORM_ID_alter()instead ofhook_form_alter()for cleaner code.digid_authentication_page()sets a message if authentication was cancelled. This is however set as a confirmation/ok message instead of a warning._digid_encode_bsn()looks a little useless. It is just a wrapper forsha1().@param. Example:@param $result_code stringinstead of@param string.digid_complete()todigid_validate(). This is more self explanatory.Comment #30
avpadernoI am changing status as per previous comments.
Comment #31
heine commentedSorry, why?
Comment #32
avpadernoI am sorry; the status I meant to select was .
Comment #33
rikvd commentedI've just contacted the Dutch authority that controls on the DigID service and I've asked them about the logo licensing policies, they are going to find out what the possibilities are for getting a GPLv2 compatible solution. There are several other possibilities like letting the user download the logo themselves (or doing this automatically upon installation) but that's considered a bit less fancy.
Comment #34
rikvd commentedmy feedback is in italic
Release blockers
none of the other contrib modules implements such permissions.
Other comments
drupalis rubbish. Something along the lines ofdigid=0would be better.changed as suggested
The Digid module requires the <a href="@link">hashkey</a> has been settoThe Digid module requires a <a href="@digid_settings">hashkey</a>. This is better English and the placeholder is self explanatory.changed as suggested
changed as suggested
If you change the hashkey later on, the external user settings are no longer coupled with the Drupal user settings. This is not desirable.
This is copied from the official DigiD documentation. This makes it easier to understand for the end-user if he follows the documentation.
l(t('Request DigiD'), 'aanvragen-digid', array('attributes' => array('title' => t('Request DigiD'))))do? It points to/aanvragen-digid, which is not only a non-existing URL path, but the path is also Dutch instead of American English.changed to an external URL for requesting a DigiD
hook_form_FORM_ID_alter()instead ofhook_form_alter()for cleaner code.There are multiple forms altered with the same modifications, so it is more efficient to do this in one function.
changed as suggested
digid_authentication_page()sets a message if authentication was cancelled. This is however set as a confirmation/ok message instead of a warning.It is the user that cancels the action. This makes it a confirmation of his action.
_digid_encode_bsn()lookes a little useless. It is just a wrapper forsha1().changed as suggested
@param. Example:@param $result_code stringinstead of@param string.The problem got solved because the related function is removed.
digid_complete()todigid_validate(). This is more self explanatory.changed as suggested
Comment #35
xanoA lot of contributed modules provide administrative permissions. Access administration apges is a very general permission for pages with often only a few settings. Changing such settings often does not break things. DigiD however has settings that if changed could break your website. They also look pretty sensitive to me, so a separate permission that is to be given to trusted users only looks like a requirement to me.
There is no reason to use form element descriptions that are for 80% identical to the elements' titles. I still recommend you remove those descriptions. The UX team gives the same advice to Drupal developers. If the official documentation encourages such titles and description, then IMO it is 'broken'.
Comment #36
avpadernoComment #37
rikvd commentedseparate permission implemented, removed desciptions.
Comment #38
avpadernoI will review the code tomorrow morning my time (which means between 16 hours).
I apologize for the delay in approving CVS applications; it's not our intent to discourage users from contributing on Drupal.org.
Comment #39
rikvd commentedthe last thing to do is make the digid logo 'uploadable' in the settings, as a workaround for the licence.
Comment #40
avpadernoThank you for your contribution! I am going to update your account.
These are some recommended readings to help with excellent maintainership:
You can find more contributors chatting on the IRC #drupal-contribute channel. So, come hang out and stay involved.
Thank you, also, for your patience with the review process.
Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.
I thank all the dedicated reviewers as well.
Comment #41
rikvd commentedthank you Kiam, for all the work you have done for me, and off course the rest, who reviewed my module :)
Comment #44
avpaderno