Exemple #1
0
 def encodeProvider(self, name):
     enc = { "provider" : name }
     return Base64Util.base64urlencode(String(json.dumps(enc)).getBytes())
    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, 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