Repository: Cloud-CV/EvalAI
Issue: OAuth integration
Root cause: Unimplemented Feature Gap

Has there been any more consideration to add OAuth support.  I saw issue [#766](https://github.com/Cloud-CV/EvalAI/issues/766) where the OAuth integration was tabled until a future release.  Now we're 2 years in the future and it would be nice to know if this can be reopened.

@RishabhJain2018  I would like to work on integration. Can I work on this 

Hi @rohitjha941, sure you can work on this.

Hi, Currently I am starting with Github. What all services do you want me to use? 

Hi - I work with @WinnersGoHome.  We're working to deploy this in an enterprise environment - ideally we would be able to authenticate against Azure Active Directory, which supports OpenID connect and OAuth 2.0 among other mechanisms.  At a minimum (if that's too complex to code), we need to integrate into our Active Directory environment using LDAP.

I noticed that you already include the django-allauth module.  Azure AD uses the Microsoft provider in django-allauth.

Should I Shart with Azure Active Directory? Also, I have worked a little on Github Integration. I will be creating a PR for GitHub by Tomorrow Night. 

That would be great!

I will be a bit late, I am busy completing formalities in my college 

 Hi, I am really sorry for the delay. I have completed GitHub integration.

![github](https://user-images.githubusercontent.com/33960527/58746405-74fb9780-847b-11e9-980f-8c99a7f6f1cf.gif)

Pull Request: #2353 

I wonder how much it will take to make it working for general purpose OAuth or, for example, integration with GitLab.

@thoth291 It will not take much time to integrate Gitlab. Just in case, Are you talking about self-hosted gitlab instance?

@RishabhJain2018  Can you please let me know what all services we are gonna use?

@rohitjha941 - yeah, I'm talking about self-hosted GitLab - that might make it easy-path for future integration with "kernels" hosted through in-house GitLab and other type of reproducibility...
Pure OAuth or OpenID is probably the way to move it forward - but I'm not familiar with auth protocols enough to judge what will be easier: create integration with GitLab or general purpose OAuth/OpenID...

@thoth291  Ok will work on gitlab integration. 

@thoth291 - my understanding is that OpenID is an authentication provider, whereas OAuth2 is an authorization provider.  To confuse things, OpenID Connect provides OpenID authentication on top of OAuth2 for authorization.  https://spin.atomicobject.com/2016/05/30/openid-oauth-saml/

@rohitjha941 to be clear, what do you mean by Gitlab integration?  Does that mean using self-hosted Gitlab as a OAuth2 or OpenID Connect provider (https://docs.gitlab.com/ee/topics/authentication/)?  If EvalAI uses a standard protocol like OAuth2 or OpenID Connect under the covers, then I'd say the work you're doing isn't specific to Gitlab, but could be used for any standards compliant provider such as Azure Active Directory, Github, Gitlab, etc.

@shawnahall71 Yup my work is not specific to GitLab. I have already worked on GitHub using Django AllAuth.I would do the same for Gitlab. Also, any service provider mentioned [here](https://django-allauth.readthedocs.io/en/latest/providers.html) can be integrated easily. 

Hi @rohitjha941 - we have a new team member who is ready to try integrating EvalAI with Azure Active Directory, so I wanted to check in and see how the work was coming.

Also, I looked through the service provider list you posted above for django-allauth, and while there are a ton of providers I don't see Azure Active Directory (just Microsoft Graph).  However, I do see what appears to be code to handle AAD in the django-allauth repo here: https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/providers/azure/provider.py.  Do you know if django-allauth has AAD support, and maybe it's just not in the documentation yet?

@shawnahall71  I have gone through documentation Azure Active Directory. Are you using OAuth/OpenID or SSO? Django All Auth does not have support for AAD (SSO SAML etc).   But OAuth can be implemented using Microsoft as a Provider

To make sure we're on the same page, this is the list of Azure Active Directory SSO methods available that I've been referring to: https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/what-is-single-sign-on.  I haven't done an integration with our AAD before so I'm not 100% sure, but I believe we have the option of using either OpenID Connect / OAuth as well as SAML.

@shawnahall71  We can use OpenID Connect / OAuth

@rohitjha941, Have this been pushed to the master? Can I use OpenID/OAuth now? If yes - then where I should put my settings for AppID, ClientID and server_url?

@rohitjha941, I'm still trying to figure out where should I specify my auth information in the setup in order to connect it to something like **Azure Active Directory**. I can't find any examples in django framework and almost lost my hope to try use your product in more or less realistic scale... **Could you please advise?**

@RishabhJain2018 is this issue still available, I think a part of this has already been done by @rohitjha941 so if you can let me know integration with what all services are required I can do.
@thoth291 Are you still working on this?

Unfortunately, @anshalshukla, I can't do much more than just wait for someone to guide me on this. My team is looking forward to use EvalAI - but auth is showstopper at this point.

> My team is looking forward to use EvalAI - but auth is showstopper at this point.

Hi @thoth291, Thank you for bringing this up. I lead this project and it isn't on the roadmap for the next few months but in case we have a use case here, I'd be happy to prioritize it and get it implemented in the platform.

Moreover, I'd be happy to discuss with you the challenge you're trying to host and what all feature requirements you have. We can connect on `rishabhjain@gatech.edu` and schedule a short call to discuss all of this. Let me know your thoughts on it.



Closing this since it is a very old issue.