Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADD: b2access loginpass #33

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
UPDATE: passing base_url in function create_b2access_backend, default…
… B2Access and B2AccessDev instances are provided
  • Loading branch information
Tomas Kulhanek committed Jul 29, 2019
commit f07decbaa675691395f252a6cc234dc8a10dc5d7
59 changes: 31 additions & 28 deletions loginpass/b2access.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
gets endpoint from B2ACCESS_API_URL environment variable, if not specified, default development url is used

development: https://unity.eudat-aai.fz-juelich.de/
production: https://b2access.eudat.eu/
production: https://b2access.eudat.eu).

:copyright: (c) 2019 by Tomas Kulhanek, ESDF
:license: MIT, see LICENSE for more details.
Expand All @@ -22,31 +22,34 @@
#User information https://unity.eudat-aai.fz-juelich.de:443/oauth2/userinfo https://b2access.eudat.eu:443/oauth2/userinfo

# development endpoint
B2ACCESS_API_URL = os.environ.get('B2ACCESS_API_URL',default='https://unity.eudat-aai.fz-juelich.de/')
B2ACCESS_TOKEN_URL = B2ACCESS_API_URL + 'oauth2/token'
B2ACCESS_TOKENINFO_SUFFIX='oauth2/tokeninfo'
B2ACCESS_TOKENINFO_URL = B2ACCESS_API_URL + B2ACCESS_TOKENINFO_SUFFIX
B2ACCESS_AUTH_URL = B2ACCESS_API_URL + 'oauth2-as/oauth2-authz'
B2ACCESS_USERINFO_SUFFIX='oauth2/userinfo'
B2ACCESS_USERINFO_URL = B2ACCESS_API_URL + B2ACCESS_USERINFO_SUFFIX

class B2Access(OAuthBackend):
OAUTH_TYPE = '2.0,oidc'
OAUTH_NAME = 'b2access'
OAUTH_CONFIG = {
'api_base_url': B2ACCESS_API_URL,
'access_token_url': B2ACCESS_TOKEN_URL,
'authorize_url': B2ACCESS_AUTH_URL,
'client_kwargs': {'scope': 'email profile'},
}

def profile(self, **kwargs):
print('b2access profile kwargs:',kwargs)
resp = self.get(B2ACCESS_USERINFO_SUFFIX,**kwargs)
data = resp.json()
params = {
'sub': data['sub'],
'name': data['name'],
'email': data['email'],

def create_b2access_backend(name,b2accessurl):
B2ACCESS_API_URL = b2accessurl.strip('/')
B2ACCESS_TOKEN_URL = '{b2accessurl}/oauth2/token'.format(b2accessurl=b2accessurl)
B2ACCESS_TOKENINFO_URL = '{b2accessurl}/oauth2/tokeninfo'.format(b2accessurl=b2accessurl)
B2ACCESS_AUTH_URL = '{b2accessurl}/oauth2-as/oauth2-authz'.format(b2accessurl=b2accessurl)
B2ACCESS_USERINFO_SUFFIX='/oauth2/userinfo'
B2ACCESS_USERINFO_URL = '{b2accessurl}/oauth2/userinfo'.format(b2accessurl=b2accessurl)
class B2Access(OAuthBackend):
OAUTH_TYPE = '2.0,oidc'
OAUTH_NAME = 'b2access'
OAUTH_CONFIG = {
'api_base_url': B2ACCESS_API_URL,
'access_token_url': B2ACCESS_TOKEN_URL,
'authorize_url': B2ACCESS_AUTH_URL,
'client_kwargs': {'scope': 'email profile'},
}
return UserInfo(params)

def profile(self, **kwargs):
print('b2access profile kwargs:',kwargs)
resp = self.get(B2ACCESS_USERINFO_SUFFIX,**kwargs)
data = resp.json()
params = {
'sub': data['sub'],
'name': data['name'],
'email': data['email'],
}
return UserInfo(params)

B2Access = create_b2access_backend('b2access','https://b2access.eudat.eu')
B2AccessDev = create_b2access_backend('b2access','https://unity.eudat-aai.fz-juelich.de')