You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Feature Request: 3rd party authentication server method #2019
In the context of a wekan instance hosted on a private protected network we need to set up a SSO integration with an Authentication server implementing security by filtering http requests.
When resquesting access to wekan instance 3rd party authentication server captures the requests to authenticate user and checks permissioning. If authentication is successful 3rd party authentication server allows routing to wekan server as well as injects HTPP headers with authentication context. So from wekan perspective a request arriving on wekan should be considered auhtorized and needs to start session for user provided in HTTP headers.
What needs to be implemented:
Enable 3rd party authentication server method on wekan for all users
All users authentication method is forced to 3rd party authentication server
Admin panel:
i. Button/parameter to switch wekan to 3rd party authentication server mode
ii. Admin form to fill map between wekan user information model and HTTP headers tag names
a. UserName
b. Fullname (allow concatenation of first name + last name tags)
c. Email adress
On first user connection with 3rd party authentication server mode enabled if user is not already present in database create a user using http headers information as defined in the mapping set in admin panel
if user exists in database retrieve the http header tag mapped to UserName to start user session. This should not impact deep links to boards or card
Inactivate change password in profile option menu if 3rd party authentication server mode is enabled
the settings around 3rd party authentication server should be preserved when upgrading wekan.
we’ve actually tried and set up all the authentication methods offered but none meet our security requitements and cloud access and usage restrictions.
the 3rd party software in use is SSO siteminder
we have tried:
PASSWORD & LDAP : both still have the weaknesss of possible impersonation of someone else if you get the user password
SAML : we’ve set up a sandstorm sso instance but faced issues with set up due to cloud restrictions in place as well as user experience being much less nice than wekan standalone
CAS : is not a standard we can use
CLOUD AUTH: all authentication that rely on web/cloud accounts (google, friend... ) are not allowed.
we’ve tried our best with the already provided solutions hence this feature request.
As long as this authentication server can comply to standartized auth API shouldn't be a big deal.
...user information model and HTTP headers tag names ... as defined in the mapping set
I don't think that any kind of mapping set is needed for as long as 3rd party server comply to the API contract.
This feature request looks a bit crude, whole HTTP headers mapping set thingy is a bit frustrating.
Just want to clarify few things because you might waste a lot of time and money for this...
BountySource had proven to be very unreliable as a problem-solver.
3rd party authentication server mode
As long as this authentication server can comply to standardized auth API shouldn't be a big deal.
Unfortunately 3rd party authentication is not made thru standard auth API. As far as the endpoint (wekan here) is concerned Authentication happens upstream and endpoint doesn't receive unauthenticated requests. The request arrives at wekan endpoint = user is authenticated. You just need to start the user context.
...user information model and HTTP headers tag names ... as defined in the mapping set
I don't think that any kind of mapping set is needed for as long as 3rd party server comply to the API contract.
The mapping is in place as there are specific custom (to our organization) headers tags set but would rather not have them hardcoded.
Hi,
I received email where was some confusion about how I was planning to implement this. To clear the confusion, here are my detailed plans.
Implementing this feature is still in progress. It is not ready yet. I plan to have this feature done sometime at 2019-06 or 2019-07.
General Description
This will be general header login implementation. Any webserver (Caddy/Nginx/Apache/Siteminder/etc) that provides user details in HTTP headers, can this way make Wekan autologin as that user, and also automatically create that user to Wekan when it does not exist yet.
With header login, there is no need to have any other additional login, like LDAP/OAuth2/etc.
How to provide headers to Wekan
NOTE: I think HEADER_LOGIN_ID will not be used for anything. I guess it could maybe be checked that does it exists, or does it have some value. But I don't know is this really necessary at all. Maybe I could just not include it at all to Wekan?
Wekan checks does HEADER_LOGIN_EMAIL setting have some text, that has name of header to check, for example is there header name HEADEREMAILADDRESS or BNPPEMAILADDRESS or some other header name.
Wekan checks does that header name have some value. For example, there could be HEADEREMAILADDRESS=joe@example.com or BNPPEMAILADDRESS=joe@example.com
Wekan checks is there headers for firstname and lastname. If there is, Wekan combines it with space between, firstname + " " + lastname, to get fullname. This is because Wekan currently only stores fullname, and not firstname and lastname.
If there is not existing user with that email address, Wekan creates new user with those details.
Wekan autologins user.
Possible addtitional features sometime later
Headers also for these:
fullname
avatar image URL
If someone has some additional headers that they really use in some other login provider, please add info about it as comment to this issue.
Hello Lauri,
Thank you for your Email.
We are looking forward to test this new feature.
Thks and regards.
Laurent
Le jeu. 6 juin 2019 à 16:01, Lauri Ojansivu <notifications@github.com> a
écrit :
Would someone need to have this check, to limit allowed email addresses to
specific domain?
export HEADER_LOGIN_DOMAIN=example.com
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2019?email_source=notifications&email_token=AKPMTLAD22Q3GAQ4X2OYEE3PZEKDZA5CNFSM4GGCBJ5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXC5YKI#issuecomment-499506217>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AKPMTLHDBZDCMQZ3B7WTVKDPZEKDZANCNFSM4GGCBJ5A>
.
Activity
NerikBnp commentedon Nov 23, 2018
Posted a bounty 500USD on this feature request: Bounty here
xet7 commentedon Nov 23, 2018
@NerikBnp
Please add examples of 3rd party authentication server software.
Wekan already has LDAP.
It's also possible to add Google login proxybouncer in front Wekan login.
CAS and OIDC partially work already.
Later there will probably be also RocketChat, Google and Auth0 login.
SAML is in Sandstorm Wekan, but not on Standalone Wekan yet.
Friend login will be added sometime.
Do you mean some of these, or something else?
NerikBnp commentedon Nov 23, 2018
Hi @xet7
we’ve actually tried and set up all the authentication methods offered but none meet our security requitements and cloud access and usage restrictions.
the 3rd party software in use is SSO siteminder
we have tried:
PASSWORD & LDAP : both still have the weaknesss of possible impersonation of someone else if you get the user password
SAML : we’ve set up a sandstorm sso instance but faced issues with set up due to cloud restrictions in place as well as user experience being much less nice than wekan standalone
CAS : is not a standard we can use
CLOUD AUTH: all authentication that rely on web/cloud accounts (google, friend... ) are not allowed.
we’ve tried our best with the already provided solutions hence this feature request.
xet7 commentedon Nov 23, 2018
Oh OK, you mean secure login without using passwords.
Would you prefer adding SSO to Wekan with:
a) siteminder
b) SQRL. SQRL is secure single factor, and does not use any passwords.
yuriy-yarosh commentedon Nov 25, 2018
@NerikBnp
As long as this authentication server can comply to standartized auth API shouldn't be a big deal.
I don't think that any kind of mapping set is needed for as long as 3rd party server comply to the API contract.
This feature request looks a bit crude, whole HTTP headers mapping set thingy is a bit frustrating.
Just want to clarify few things because you might waste a lot of time and money for this...
BountySource had proven to be very unreliable as a problem-solver.
NerikBnp commentedon Nov 26, 2018
Thank you both for your feedbacks.
Thing is that in our situation we need to navigate in a very constrained environnement and most of those are not my choice nor within reach to change.
@xet7 we would only be able to use a) siteminder
@yuriy-yarosh see my comments:
Unfortunately 3rd party authentication is not made thru standard auth API. As far as the endpoint (wekan here) is concerned Authentication happens upstream and endpoint doesn't receive unauthenticated requests. The request arrives at wekan endpoint = user is authenticated. You just need to start the user context.
The mapping is in place as there are specific custom (to our organization) headers tags set but would rather not have them hardcoded.
xet7 commentedon Feb 28, 2019
I'm working on this. I will add comment to this issue when there is some progress.
NerikBnp commentedon Feb 28, 2019
hi @xet7 that’s great news. do not hesitate to reach out should you have any queries :)
48 remaining items
xet7 commentedon Jun 6, 2019
Hi,
I received email where was some confusion about how I was planning to implement this. To clear the confusion, here are my detailed plans.
Implementing this feature is still in progress. It is not ready yet. I plan to have this feature done sometime at 2019-06 or 2019-07.
General Description
This will be general header login implementation. Any webserver (Caddy/Nginx/Apache/Siteminder/etc) that provides user details in HTTP headers, can this way make Wekan autologin as that user, and also automatically create that user to Wekan when it does not exist yet.
With header login, there is no need to have any other additional login, like LDAP/OAuth2/etc.
How to provide headers to Wekan
NOTE: I think HEADER_LOGIN_ID will not be used for anything. I guess it could maybe be checked that does it exists, or does it have some value. But I don't know is this really necessary at all. Maybe I could just not include it at all to Wekan?
Docker example. Syntax: export settingname=headername.
Siteminder example. Header names could be different.
Login will work this way:
firstname + " " + lastname, to get fullname. This is because Wekan currently only stores fullname, and not firstname and lastname.Possible addtitional features sometime later
Headers also for these:
If someone has some additional headers that they really use in some other login provider, please add info about it as comment to this issue.
xet7 commentedon Jun 6, 2019
Would someone need to have this check, to limit allowed email addresses to specific domain?
lnvr commentedon Jun 15, 2019
xet7 commentedon Aug 24, 2019
@justinr1234 will start soon to try to code this feature. If he gets it working, he will get bounty.
I currently have other work in progress.
xet7 commentedon Aug 25, 2019
Actually, I will do this myself anyway.
FieldofClay commentedon Mar 25, 2020
Based on the commits linked to this issue, it got somewhat documented but never implemented. Is this still on the cards?
xet7 commentedon Mar 25, 2020
@FieldofClay
Yes, this is still on the todo list at Roadmap. It will be implemented once I figure out how in practice it's possible to do.
Add Header Login. Part 2.
Add Header Login.