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
Ejemplo n.º 4
0
    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