Ian thanks a lot for your proposal and submission.

This project has been proposed by Abhinandan Prateek, so I am copying him in 
this email so he can comment.

@Abhi, you need to access the google melange site and find Ian's proposal 

-Sebastien

On May 3, 2013, at 12:40 PM, Ian Duffy <i...@ianduffy.ie> wrote:

> Hi,
> 
> Sorry just noticed that the attachment appeared to have got stripped, here
> is the contents of the PDF. Alternatively I have uploaded it here:
> http://ianduffy.ie/Cloudstack-LDAP.pdf
> 
> *Apache Cloudstack Google Summer of Code Project: LDAP user provisioning*
> 
> 
> Need to automate the way the LDAP users are provisioned into cloud stack.
> This will mean better integration with a LDAP server, ability to import
> users and a way to define how the LDAP user maps to the cloudstack users.
> 
> 
> Abstract
> 
> 
> 
> The aim of this project is to provide an easier mechanism to provision
> users from LDAP into cloudstack.  Currently cloudstack provides
> authentication LDAP authentication.  In this authentication users must be
> first setup in cloudstack.  Once the user is setup in cloudstack they can
> authenticate using their ldap username and password.
> 
> 
> 
> This feature aims to extend the current functionality to make user setup
> align with LDAP group.
> 
> 
> Deliverables
> 
> ñ  Service that retrieves a list of ldap users from the configured group
> 
> ñ  Extension of cloudstack UI  “Add User” screen to offer user list from
> LDAP
> 
> ñ  Add service for saving new user with details from LDAP
> 
> ñ  BDD unit and acceptance automated testing
> 
> ñ  Document change details
> 
> 
> Quantifiable results
> 
> 
>  Given  A need to add new user to cloudstack and LDAP is setup
> 
> When
> 
> You open the “Add User” screen
> 
> Then
> 
> A table of users appears for the current list of users (not already created
> on cloudstack) from the LDAP group displaying their a checkbox, username,
> name and email address. The timezone dropdown will still be available
> beside each user.
>     Given  A need to add new user to cloudstack and LDAP is not setup
> 
> When
> 
> You open the “Add User” screen
> 
> Then
> 
> The current add user screen and functionality is provided
>     Given  A need to add new user to cloudstack and LDAP is setup
> 
> When
> 
> You open the “Add User” screen and mandatory information is missing
> 
> Then
> 
> These fields will be editable to enable you populate the name or email
> address
> 
> 
>  Given  A need to add new user to cloudstack, LDAP is setup but user is in
> the ldap query group
> 
> When
> 
> You open the “Add User” screen
> 
> Then
> 
> There is a list of LDAP users displayed but your current user is present in
> the list
>     Given  A need to add new user to cloudstack, LDAP is setup but user is
> not in the query group
> 
> When
> 
> You open the “Add User” screen
> 
> Then
> 
> There is a list of LDAP users displayed but your current user is not in the
> list
>     Given  You need to add group of new users to cloudstack
> 
> When
> 
> You open the “Add User” screen, select the users and hit save
> 
> Then
> 
> The list of new users are saved to the database
> 
> 
>  Given  You need to add group of new users to cloudstack
> 
> When
> 
> You open the “Add User” screen, select the users and hit save
> 
> Then
> 
> The list of new users are saved to the database
> 
> 
>  Given  You have created a new LDAP user on cloudstack
> 
> When
> 
> The user authenticates against cloudstack with the right credentials
> 
> Then
> 
> They are authorised in cloudstack
>       Given  A user wants to edit an LDAP user
> 
> When
> 
> They open the Edit User screen
> 
> Then
> 
> The password fields are disabled and cannot be changed
>    The design document   *Ldap User List Service*
> 
> 
> 
> *name*:  ldapUserList
> 
> *responseObject*: LDAPUserResponse {username, email, name}
> 
> *parameter*: listType:enum {NEW, EXISTING, ALL} (Default to ALL if no
> option provided)
> 
> 
> 
> Create a new API service call for retreiving the list of users from LDAP.
> This will call a new ConfigurationService which will retrieve the list of
> users using the configured search base and the query filter.   The list may
> be filtered in the ConfigurationService based on listType parameter.
> 
> 
> 
> *Ldap Available Service*
> 
> 
> 
> *name*:  ldapAvailable
> 
> *responseObject*: LDAPAvailableResponse {available:boolean}
> 
> 
> 
> Create a new API service call verifying LDAP is setup correctly verifying
> the following configuration elements are all set:
> 
> ñ ldap.hostname
> 
> ñ ldap.port
> 
> ñ ldap.usessl
> 
> ñ ldap.queryfilter
> 
> ñ ldap.searchbase
> 
> ñ ldap.dn
> 
> ñ ldap.password
> 
> 
> 
> The verification that all of these are set will return an available boolean
> true.  If required this could perform a status check against LDAP first and
> provide warning if it fails.
> 
> 
> *Ldap Save Users Service*
> 
> 
> 
> *name*:  ldapSaveUsers
> 
> *responseObject*: LDAPSaveUsersResponse {list<UserResponse>}
> 
> *parameter*: list of users
> 
> 
> 
> Saves the list of objects instead.  Following the functionality in
> CreateUserCmd  it will
> 
> ñ Create the user via the account service
> 
> ñ Handle the response
> 
> 
> 
> It will be decided whether a transation should remain over whole save or
> only over individual users.  A list of UserResponse will be returned.
> 
> 
> 
> 
> 
> 
> 
> *Extension of cloudstack UI  “Add User” screen *
> 
> 
> 
> Extend account.js to enable it add a user list with editable fields where
> required.  The new “Add User” screen for LDAP setup.
> 
> ñ This will make an ajax call to the ldapAvailable, ldapUserList and
> ldapSaveUsers services
> 
> ñ Validation will be maintained on username, email, firstname and lastname
> 
> 
> 
> *Extension of cloudstack UI  “Edit User” screen *
> 
> 
> 
> Extend account.js to disable the password fields on the edit user screen if
> LDAP available.
> 
> ñ This will make an ajax call to the ldapAvailable and updateUser services
> 
> ñ Validation will be maintained on username, email, firstname and
> lastname.  Additional server validation will ensure password has not
> changed.
> 
> 
> 
> 
> Approach
> 
> 
> 
> To get started a development cloudstack environment with DevCloud used to
> verify changes.  Then once the schedule agreed with the mentor the
> deliverables will be broken into smaller User stories with expected
> delivery dates set.   The development cycle will focus on BDD enforcing all
> unit and acceptance tests written first.
> 
> 
> 
> A build pipe line for continious delivery environment around cloudstack
> here will be created, the following stages will be adopted
> 
> 
> 
> *Stage*
> 
> *Action*
> 
> Commit
> 
> Runs unit tests
> 
> Sonar
> 
> Runs code quality metrics
> 
> Acceptance
> 
> Deploys the dev cloud and runs all acceptance tests
> 
> Deployment
> 
> Deploy a new management server using Chef
> 
> 
> 
> 
> About Me
> 
> 
> 
> I am a Computer Science Student at Dublin City University in Ireland. I
> have interests in virtualization, automation, information systems,
> networking and web development.
> 
> 
> 
> I was involved with a project in a K-12(educational) environment of moving
> their server systems over to a virtualized environment on ESXi.   I have
> good knowledge of programming in Java, PHP and Scripting langages. During
> the configuration of an automation system for OS deployment I experienced
> some exposure to scripting in powershell, batch, vbs and bash and
> configuration of PXE images based of WinPE and Debian.
> 
> Additionally I am also a mentor in an opensource teaching movement called
> CoderDojo, we teach kids from the age of 8 everything from web page, HTML 5
> game and raspberry pi development.
> 
> 
> 
> I’m excited at the opportunity and learning experience that cloudstack are
> offering with this project.
> 
> 
> References
> 
> 
> 
> ñ https://cwiki.apache.org/CLOUDSTACK/development-101.html
> 
> ñ
> http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.0.2/html/Admin_Guide/
> 
> ñ
> http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.0.2/html/API_Developers_Guide/index.html
> 
> ñ https://issues.apache.org/jira/browse/CLOUDSTACK-2014
> 
> ñ
> http://www.slideshare.net/sebastiengoasguen/apache-cloudstack-google-summer-of-code
> 
> ñ
> http://kirkjantzer.blogspot.co.uk/2013/03/ldap-authentication-in-cloudstack-v401.html
> 
> ñ http://www.ldapguru.info/ldap/ldap-search-best-practices.html
> 
> ñ http://docs.oracle.com/javase/6/docs/technotes/guides/jndi/jndi-ldap.html
> 
> 
> 
> 
> 
> 
> On 3 May 2013 17:35, Ian Duffy <i...@ianduffy.ie> wrote:
> 
>> Hi,
>> 
>> I was wondering If I could get some feedback on the attached file labeled
>> "Cloudstack-LDAP.pdf". It outlines a design document for the project
>> labeled "LDAP user provisioning"
>> 
>> From my current understanding of the single sign on mechanism implemented
>> in cloudstack a LDAP user must be created manually within the cloudstack
>> database. Would it be preferred to:
>> 
>> A) Create a service that polls LDAP every so often to check for new user
>> creation.
>> or
>> B) Extend the login page to check LDAP after failing to find a user within
>> the cloudstack database. On success of finding a user in LDAP a profile
>> would automatically be created within the cloudstack database.
>> 
>> Kind regards,
>> Ian
>> 

Reply via email to