def getPassportRedirectUrl(self, provider): # provider is assumed to exist in self.registeredProviders url = None try: facesContext = CdiUtil.bean(FacesContext) tokenEndpoint = "https://%s/passport/token" % facesContext.getExternalContext( ).getRequest().getServerName() httpService = CdiUtil.bean(HttpService) httpclient = httpService.getHttpsClient() print "Passport. getPassportRedirectUrl. Obtaining token from passport at %s" % tokenEndpoint resultResponse = httpService.executeGet( httpclient, tokenEndpoint, Collections.singletonMap("Accept", "text/json")) httpResponse = resultResponse.getHttpResponse() bytes = httpService.getResponseContent(httpResponse) response = httpService.convertEntityToString(bytes) print "Passport. getPassportRedirectUrl. Response was %s" % httpResponse.getStatusLine( ).getStatusCode() tokenObj = json.loads(response) url = "/passport/auth/%s/%s" % (provider, tokenObj["token_"]) except: print "Passport. getPassportRedirectUrl. Error building redirect URL: ", sys.exc_info( )[1] return url
def getPassportRedirectUrl(self, provider, loginHint): # provider is assumed to exist in self.registeredProviders url = None try: facesContext = CdiUtil.bean(FacesContext) tokenEndpoint = "https://%s/passport/token" % facesContext.getExternalContext().getRequest().getServerName() httpService = CdiUtil.bean(HttpService) httpclient = httpService.getHttpsClient() print "Passport-social. getPassportRedirectUrl. Obtaining token from passport at %s" % tokenEndpoint resultResponse = httpService.executeGet(httpclient, tokenEndpoint, Collections.singletonMap("Accept", "text/json")) httpResponse = resultResponse.getHttpResponse() bytes = httpService.getResponseContent(httpResponse) response = httpService.convertEntityToString(bytes) print "Passport-social. getPassportRedirectUrl. Response was %s" % httpResponse.getStatusLine().getStatusCode() locale = CdiUtil.bean(LanguageBean).getLocaleCode()[:2] if (locale != "en" and locale != "fr"): locale = "en" tokenObj = json.loads(response) if (loginHint != None): url = "/passport/auth/%s/%s/locale/%s/id/%s" % (provider, tokenObj["token_"], locale, Base64Util.base64urlencode(loginHint)) else: url = "/passport/auth/%s/%s/locale/%s" % (provider, tokenObj["token_"], locale ) print "Passport-social. getPassportRedirectUrl. Returning URL = %s" % url except: print "Passport-social. getPassportRedirectUrl. Error building redirect URL: ", sys.exc_info()[1] return url
def getPassportRedirectUrl(self, provider): # provider is assumed to exist in self.registeredProviders url = None try: facesContext = CdiUtil.bean(FacesContext) tokenEndpoint = "https://%s/passport/token" % facesContext.getExternalContext().getRequest().getServerName() httpService = CdiUtil.bean(HttpService) httpclient = httpService.getHttpsClient() print "Passport. getPassportRedirectUrl. Obtaining token from passport at %s" % tokenEndpoint resultResponse = httpService.executeGet(httpclient, tokenEndpoint, Collections.singletonMap("Accept", "text/json")) httpResponse = resultResponse.getHttpResponse() bytes = httpService.getResponseContent(httpResponse) response = httpService.convertEntityToString(bytes) print "Passport. getPassportRedirectUrl. Response was %s" % httpResponse.getStatusLine().getStatusCode() tokenObj = json.loads(response) url = "/passport/auth/%s/%s" % (provider, tokenObj["token_"]) except: print "Passport. getPassportRedirectUrl. Error building redirect URL: ", sys.exc_info()[1] return url
def createRequest(self, providerId, params): """Create a redirect URL to send an authentication request to passport.""" url = None try: providerConfig = self.registeredProviders.get(providerId) if providerConfig is None: print("Passport. createRequest. Provider %s does not exist" % providerId) raise PassportError() facesContext = CdiUtil.bean(FacesContext) serverName = facesContext.getExternalContext().getRequest( ).getServerName() tokenEndpoint = "https://%s/passport/token" % serverName httpService = CdiUtil.bean(HttpService) httpclient = httpService.getHttpsClient() resultResponse = httpService.executeGet( httpclient, tokenEndpoint, Collections.singletonMap("Accept", "text/json")) httpResponse = resultResponse.getHttpResponse() bytes = httpService.getResponseContent(httpResponse) response = httpService.convertEntityToString(bytes) if response is not None: token = json.loads(response)["token_"] else: raise PassportError("Failed to obtain token from Passport") if params is not None: jsonParams = json.dumps(params) encryptedParams = CdiUtil.bean(EncryptionService).encrypt( jsonParams) # Need to translate from base64 to base64url to make it URL-friendly for passport # See RFC4648 section 5 encodedParams = StringUtils.replaceChars( encryptedParams, "/+", "_-") url = "/passport/auth/%s/%s/%s" % (providerId, token, encodedParams) if providerConfig["GCCF"]: # Need to set the language cookie langCode = { "en": "eng", "fr": "fra" }[params["ui_locales"][:2].lower()] url = "%s?lang=%s&return=%s" % ( self.passportConfig["languageCookieService"], langCode, URLEncoder.encode("https://" + serverName + url, "UTF8")) else: url = "/passport/auth/%s/%s" % (providerId, token) except: print("Passport. createRequest. Error building redirect URL: ", sys.exc_info()[1]) return url
def getPassportRedirectUrl(self, provider, issuerSpNameQualifier): # provider is assumed to exist in self.registeredProviders url = None try: facesContext = CdiUtil.bean(FacesContext) tokenEndpoint = "https://%s/passport/token" % facesContext.getExternalContext().getRequest().getServerName() httpService = CdiUtil.bean(HttpService) httpclient = httpService.getHttpsClient() print "Passport-saml. getPassportRedirectUrl. Obtaining token from passport at %s" % tokenEndpoint resultResponse = httpService.executeGet(httpclient, tokenEndpoint, Collections.singletonMap("Accept", "text/json")) httpResponse = resultResponse.getHttpResponse() bytes = httpService.getResponseContent(httpResponse) response = httpService.convertEntityToString(bytes) print "Passport-saml. getPassportRedirectUrl. Response was %s" % httpResponse.getStatusLine().getStatusCode() print "Passport-saml. getPassportRedirectUrl. Loading response %s" % response tokenObj = json.loads(response) print "Passport-saml. getPassportRedirectUrl. Building URL: provider: %s" % provider print "Passport-saml. getPassportRedirectUrl. Building URL: token: %s" % tokenObj["token_"] print "Passport-saml. getPassportRedirectUrl. Building URL: spNameQfr: %s" % issuerSpNameQualifier locale = CdiUtil.bean(LanguageBean).getLocaleCode()[:2] if (locale != "en" and locale != "fr"): locale = "en" # Check if the samlissuer is there so to use the old endpoint if no collection needed if ( issuerSpNameQualifier != None ): url = "/passport/auth/%s/%s/locale/%s/saml/%s" % (provider, tokenObj["token_"], locale, Base64Util.base64urlencode(issuerSpNameQualifier)) else: url = "/passport/auth/%s/%s/locale/%s" % ( provider, tokenObj["token_"], locale ) except: print "Passport-saml. getPassportRedirectUrl. Error building redirect URL: ", sys.exc_info()[1] return url