From 6ab82b5039ba21a0fff54a7a6807364167055750 Mon Sep 17 00:00:00 2001 From: Milton Ch Date: Tue, 23 Aug 2022 07:39:16 -0400 Subject: [PATCH] draft - work in progress --- external-authn/README.md | 160 ++++++++++++++++++++++ external-authn/external-authn-diagram.png | Bin 0 -> 219945 bytes external-authn/pa-external-authn.py | 128 +++++++++++++++++ external-authn/ropc-external-authn.py | 145 ++++++++++++++++++++ external-authn/ut-external-authn.py | 73 ++++++++++ 5 files changed, 506 insertions(+) create mode 100644 external-authn/README.md create mode 100644 external-authn/external-authn-diagram.png create mode 100644 external-authn/pa-external-authn.py create mode 100644 external-authn/ropc-external-authn.py create mode 100644 external-authn/ut-external-authn.py diff --git a/external-authn/README.md b/external-authn/README.md new file mode 100644 index 0000000000..1f426db5f4 --- /dev/null +++ b/external-authn/README.md @@ -0,0 +1,160 @@ +# External Authn + +## Design +``` +Title External Authn + +actor Person +participant Browser +participant Website1 +participant Website2 +participant IDP +database cache + +Person->Browser: 1. Navigate to website1 +Browser->Website1: +Website1->Browser: 2. redirect +group Person Authn Script : Step One +Browser->IDP: 3. [GET] /oxauth/authorize?client_id=__&redirect_uri=__&state=__\n&nonce=__&prompt=none&scope=__\n&response_mode=__&response_type=__ +IDP->IDP: 4. generate jans_key +IDP<->cache: cache in session context\njans_key: {request params} +IDP->Browser: 5. redirect /internal.idp?________\nSet Pre-Authn Session Cookie +Browser->Website2: +end +Website2->Browser: 6. Display login page +Person->Browser: 7. Enter Username / PW +Browser->Website2: 8. (creds) +group ROPW script +Website2->IDP: 9. /oxauth/token?uid=__&pw="__&browser_ip=__&jans_key=__ +IDP->IDP: 10. update cache:\n "jans_key": "auth_success" +IDP->IDP: 11. retreive user claims +IDP->Website2:12. {\n "callback_url":"https://op-host/oxauth**/authorize?session_id={session_id}&redirect_uri={original_redirect}&...**",\n "userinfo": {"uid": "__",...}\n } +end +group Person Authn Script Step 2 +Website2->Browser: 13. write website 2 cookie;\n302 Location IDP callback_url +Browser->IDP: 14. callback_url_from_step_12 +IDP->IDP: 15. get session context +IDP->cache:16. delete jans_key\n lookup original redirect_uri +IDP->Browser: 17. write IDP session cookie\nand 302: Location original redirect_uri +end +Browser->Website1: +Website1->Website1: optional: 18 Validate id_token\n (claims optional) +``` +![](external-authn-diagram.png) + +Follow the instructions below to set up: + +## oxAuth Configuration +Above the **ox-auth** record of the **oxAuthConfiguration** table, enable a new attribute on the **oxAuthConfDynamic** field + +Example: +``` +"authorizationRequestCustomAllowedParameters": [ + { + "paramName": "jansKey", + "returnInResponse": false + } +] +``` + +## Enable Custom Script + +- ### Person Authentication - External Authn + +Create a new record in table **oxCustomScript**. +``` +INSERT INTO oxCustomScript ( doc_id, objectClass, dn, displayName, oxEnabled, oxRevision, oxScript, oxAlias, oxScriptType, oxModuleProperty, programmingLanguage, oxScriptError, oxConfigurationProperty, inum, description, oxLevel ) +VALUES ( 'PA01-EA01', 'oxCustomScript', 'inum=PA01-EA01,ou=scripts,o=gluu', 'pa-external-authn', 0, 1, '', '{"v": []}', 'person_authentication', '{"v": ["{\\"value1\\":\\"usage_type\\",\\"value2\\":\\"interactive\\",\\"description\\":\\"\\"}", "{\\"value1\\":\\"location_type\\",\\"value2\\":\\"ldap\\",\\"description\\":\\"\\"}"]}', 'python', NULL, '{"v": ["{\\"value1\\":\\"urlstep1\\",\\"value2\\":\\"http://demoexample.net:81\\",\\"hide\\":false,\\"description\\":\\"Url to return in step 1\\"}"]}', 'PA01-EA01', 'PA External Authn', 10 ); +``` + +Modify the **oxConfigurationProperty** field by replacing **URL_REDIRECT_URI** with the url that you want to return to the first step +``` +'{"v": ["{\\"value1\\":\\"urlstep1\\",\\"value2\\":\\"{URL_REDIRECT_URI}\\",\\"hide\\":false,\\"description\\":\\"Url to return in step 1\\"}"]}' +``` + +Modify the **oxScript** field by adding the content of the following link: [PersonAuthentication Script](pa-external-authn.py) + +- ### ROPC (Resource Owner Password Credentials) Script - External Authn + +Create a new record in table **oxCustomScript**. +``` +INSERT INTO oxCustomScript ( doc_id, objectClass, dn, displayName, oxEnabled, oxRevision, oxScript, oxAlias, oxScriptType, oxModuleProperty, programmingLanguage, oxScriptError, oxConfigurationProperty, inum, description, oxLevel ) +VALUES ( 'ROPC-EA01', 'oxCustomScript', 'inum=ROPC-EA01,ou=scripts,o=gluu', 'ropc-external-authn', 0, 1, '', '{"v": []}', 'resource_owner_password_credentials', '{"v": ["{\\"value1\\":\\"location_type\\",\\"value2\\":\\"ldap\\",\\"description\\":\\"\\"}"]}', 'python', NULL, '{"v": []}', 'ROPC-EA01', 'ROPC External Authn', 1 ); +``` + +Modify the **oxScript** field by adding the content of the following link: [ROPC (Resource Owner Password Credentials) Script](ropc-external-authn.py) + +- ### Update Token Script - External Authn + +Create a new record in table **oxCustomScript**. +``` +INSERT INTO oxCustomScript ( doc_id, objectClass, dn, displayName, oxEnabled, oxRevision, oxScript, oxAlias, oxScriptType, oxModuleProperty, programmingLanguage, oxScriptError, oxConfigurationProperty, inum, description, oxLevel ) +VALUES ( 'UPDT-EA01', 'oxCustomScript', 'inum=UPDT-EA01,ou=scripts,o=gluu', 'update-token-external-authn', 0, 1, '', '{"v": []}', 'update_token', '{"v": ["{\\"value1\\":\\"location_type\\",\\"value2\\":\\"ldap\\",\\"description\\":\\"\\"}"]}', 'python', NULL, '{"v": []}', 'UPDT-EA01', 'Update token External Authn', 1 ); +``` + +Modify the **oxScript** field by adding the content of the following link: [Update Token Script](ut-external-authn.py) + +In this script you can choose whether to use the header or payload of the **id_token** for the **callback_url**: +``` +jsonWebResponse.getHeader().setClaim("callback_url", jsonValCallbackUrl) +jsonWebResponse.getClaims().setClaim("callback_url", jsonValCallbackUrl) +``` + +## Enable custom script on the Client +In the table **oxAuthClient** modify the field **oxAttributes** associating the custom scripts configured previously +``` +"updateTokenScriptDns": ["inum=UPDT-EA01,ou=scripts,o=gluu"], +"ropcScripts": ["inum=ROPC-EA01,ou=scripts,o=gluu"], +``` + +And in the field **oxAuthDefaultAcrValues** add this value: +``` +{"v": ["pa-external-authn"]} +``` + +## Call Flow +- ### Step 1: /authorize +Request: +``` +curl --location --request GET 'https://{your-gluu-url}/oxauth/restv1/authorize?response_type=code&client_id=14e36e18-1d51-41ac-a4cf-a7dc677f53a5&scope=openid+profile+address+email&redirect_uri=https://jans.localhost/jans-auth-rp/home.htm&state=a84dd61f-533c-46a4-9315-a66fda3e9a4e&nonce=80e6bd2b-eb78-48b9-be9c-6bb33ef80991&ui_locales=&claims_locales=&request_session_id=false&acr_values=' +``` +Response: (return the **redirect_uri** with jansKey) +``` +http://demoexample.net:81?jansKey=46340f40-a554-46b1-9246-37c2e869919f +``` + +- ### Step 2: /token +Request: (**Authorization** = Basic base64(client_id:client_secret)) +``` +curl --location --request POST 'https://{your-gluu-url}/oxauth/restv1/token' \ +--header 'Authorization: Basic MTRlMzZlMTgtMWQ1MS00MWFjLWE0Y2YtYTdkYzY3N2Y1M2E1Ojk5NzE4NWU1LTc2NGUtNGE4Yi1hNjYwLTdjZmQ4NzJhNjc0Ng==' \ +--header 'Content-Type: application/x-www-form-urlencoded' \ +--data-urlencode 'grant_type=password' \ +--data-urlencode 'username=test_user' \ +--data-urlencode 'password=test_user_password' \ +--data-urlencode 'scope=openid' \ +--data-urlencode 'jansKey=46340f40-a554-46b1-9246-37c2e869919f' +``` +Response: (id_token contains in header or payload callback_url) +``` +{ + "access_token": "a0878887-b998-4da4-aa0b-4e74bd9a4441", + "refresh_token": "d8b618ac-9d9c-4b90-9cac-aafb1e38e82e", + "scope": "openid", + "id_token": "eyJjYWxsYmFja191cmwiOiJodHRwczovL2phbnMubG9jYWxob3N0L2phbnMtYXV0aC9yZXN0djEvYXV0aG9yaXplP3Jlc3BvbnNlX3R5cGU9Y29kZSZzZXNzaW9uX2lkPWI1MDFmNzg0LTY0MTAtNDIyYy1iYWQ0LWU0MTNiYTViMjI1NSZyZWRpcmVjdF91cmk9aHR0cHMlM0ElMkYlMkZqYW5zLmxvY2FsaG9zdCUyRmphbnMtYXV0aC1ycCUyRmhvbWUuaHRtJmNsaWVudF9pZD0xNGUzNmUxOC0xZDUxLTQxYWMtYTRjZi1hN2RjNjc3ZjUzYTUiLCJraWQiOiIxNmEyMmIwMy03YjUzLTQxY2QtYWE3OS01YjI1ZjNlY2QzOGNfc2lnX3JzMjU2IiwidHlwIjoiand0IiwiYWxnIjoiUlMyNTYifQ.eyJjYWxsYmFja191cmwiOiJodHRwczovL2phbnMubG9jYWxob3N0L2phbnMtYXV0aC9yZXN0djEvYXV0aG9yaXplP3Jlc3BvbnNlX3R5cGU9Y29kZSZzZXNzaW9uX2lkPWI1MDFmNzg0LTY0MTAtNDIyYy1iYWQ0LWU0MTNiYTViMjI1NSZyZWRpcmVjdF91cmk9aHR0cHMlM0ElMkYlMkZqYW5zLmxvY2FsaG9zdCUyRmphbnMtYXV0aC1ycCUyRmhvbWUuaHRtJmNsaWVudF9pZD0xNGUzNmUxOC0xZDUxLTQxYWMtYTRjZi1hN2RjNjc3ZjUzYTUiLCJhdWQiOiIxNGUzNmUxOC0xZDUxLTQxYWMtYTRjZi1hN2RjNjc3ZjUzYTUiLCJhY3IiOiJzaW1wbGVfcGFzc3dvcmRfYXV0aCIsInN1YiI6InpMM3FrWFVwZE9OOXoxRDNNVUkyRG1CTHd3MzA1RUt4eWY3al8zb0oyaDQiLCJjb2RlIjoiNzg4OTA4ZTAtMmM3MC00YjE1LWFkZmUtYWZlMDBiMTgyMTkxIiwiYW1yIjpbXSwiaXNzIjoiaHR0cHM6Ly9qYW5zLmxvY2FsaG9zdCIsImV4cCI6MTY1OTc1ODA4MywiZ3JhbnQiOiJwYXNzd29yZCIsImlhdCI6MTY1OTc1NDQ4Mywic2lkIjoiODA0OGZjYmYtM2RjNC00YjFhLTgwYjktNmU1NTkzZTJhOWMwIiwib3hPcGVuSURDb25uZWN0VmVyc2lvbiI6Im9wZW5pZGNvbm5lY3QtMS4wIn0.u0sK9Yccf-P0OLQe0cKz75dF3cKQzQt9QpoHbqBsuIgXb4YwzDTWSuVM055USo5iO9P3KUiIGnMs6WPrZa-xcH84oKWsjF4TnAHdtwE_1xSofxDUU1nSdg8V3mRjHmZKWAvSmGtWTJFqTNGJKQsz1xrTpZ4ZAsI8Ey5OUNIhLsS6BIrFixLm3Sjufe4I2hiTtUPXb1PSYkPgHPZI00h8h4NDspPM9syufMbSLi-HN1aTQaJCONw2X-4KnvLGq1utX7qryclW1pq17W2j6Z49CjCW5ZtstK2p2FRoPwnInXNNr6vqSrpWR6pY9Uus7LHZZbg2DWKBASyfdjN6ecQaIw", + "token_type": "Bearer", + "expires_in": 299 +} +``` + +- ### Step 3: callback_uri (/authorize) + +Request: +``` +curl --location --request GET 'https://{your-gluu-url}/oxauth/restv1/authorize?response_type=code&session_id=b501f784-6410-422c-bad4-e413ba5b2255&redirect_uri=https%3A%2F%2Fjans.localhost%2Fjans-auth-rp%2Fhome.htm&client_id=14e36e18-1d51-41ac-a4cf-a7dc677f53a5' +``` + +Response: (return to the **redirect_uri**) +``` +https://jans.localhost/jans-auth-rp/home.htm?code=441688df-8f36-4e2c-8174-18d23cc88049&acr_values=pa-external-authn&session_id=7ee59d72-d59a-49ce-a0cb-19c4fcfc404c&session_state=c3f595a892208e3d237722ad06d830f199295ccc355827c436fff71509401eae.a505421b-a332-4604-8772-6ca345c4a4b9 +``` \ No newline at end of file diff --git a/external-authn/external-authn-diagram.png b/external-authn/external-authn-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..44ec4931f1311ed7622c953defe4786dff5480ab GIT binary patch literal 219945 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

LXR!+io8+2gQ5U5{Ubw5k;FLeVD@ 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 literal 0 HcmV?d00001 diff --git a/external-authn/pa-external-authn.py b/external-authn/pa-external-authn.py new file mode 100644 index 0000000000..00d123beb3 --- /dev/null +++ b/external-authn/pa-external-authn.py @@ -0,0 +1,128 @@ +# PersonAuthentication External Authn + +from org.gluu.model.custom.script.type.auth import PersonAuthenticationType +from org.gluu.service.cdi.util import CdiUtil +from org.gluu.oxauth.security import Identity +from org.gluu.oxauth.service import AuthenticationService +from org.gluu.util import StringHelper +from org.gluu.oxauth.util import ServerUtil +from org.gluu.oxauth.service import SessionIdService +from org.gluu.oxauth.service import CookieService +from org.gluu.service.cache import CacheProvider +from javax.faces.context import ExternalContext +from java.util import HashMap +from org.gluu.oxauth.service import UserService, RequestParameterService +from org.gluu.oxauth.service.net import HttpService +from javax.faces.context import FacesContext +from org.gluu.jsf2.service import FacesService + +import java +import uuid + +class PersonAuthentication(PersonAuthenticationType): + def __init__(self, currentTimeMillis): + self.currentTimeMillis = currentTimeMillis + + def init(self, customScript, configurationAttributes): + print "PA External Authn. Initialization" + print "PA External Authn. Initialized successfully configurationAttributes = %s" % configurationAttributes + + self.url_step1 = None + + # Get Custom Properties + try: + self.url_step1 = configurationAttributes.get("urlstep1").getValue2() + print "PA External Authn. Initialization. url_step1: '%s'" % self.url_step1 + except: + print 'Missing required configuration attribute "urlstep1"' + + return True + + def destroy(self, configurationAttributes): + print "PA External Authn. Destroy" + print "PA External Authn. Destroyed successfully" + return True + + def getAuthenticationMethodClaims(self, requestParameters): + return None + + def getApiVersion(self): + return 11 + + def isValidAuthenticationMethod(self, usageType, configurationAttributes): + return True + + def getAlternativeAuthenticationMethod(self, usageType, configurationAttributes): + return None + + def authenticate(self, configurationAttributes, requestParameters, step): + print "PA External Authn. Authenticate for step: %s" % step + return True + + def prepareForStep(self, configurationAttributes, requestParameters, step): + if (step == 1): + return True + else: + return False + + def getExtraParametersForStep(self, configurationAttributes, step): + return None + + def getCountAuthenticationSteps(self, configurationAttributes): + return 1 + + def getPageForStep(self, configurationAttributes, step): + print "PA External Authn. GetPageForStep for step: %s" % step + + externalContext = CdiUtil.bean(ExternalContext) + sessionId = ServerUtil.getFirstValue(externalContext.getRequestParameterValuesMap(), "session_id") + if (sessionId == None): + # Retrieve sessionId from request parameters and validate it + redirectUri = ServerUtil.getFirstValue(externalContext.getRequestParameterValuesMap(), "redirect_uri") + if (redirectUri == None or StringHelper.isEmpty(redirectUri)): + print "PA External Authn. GetPageForStep redirect_uri is null or empty" + return "" + print "PA External Authn. GetPageForStep redirect_uri '%s' found in request parameters" % redirectUri + + clientId = ServerUtil.getFirstValue(externalContext.getRequestParameterValuesMap(), "client_id") + if (clientId == None or StringHelper.isEmpty(clientId)): + print "PA External Authn. GetPageForStep client_id is null or empty" + return "" + print "PA External Authn. GetPageForStep client_id '%s' found in request parameters" % clientId + + # Generate jansKey + jansKey = str(uuid.uuid4()); + print "PA External Authn. GetPageForStep jansKey '%s' generated" % jansKey + + # Create JSON Values + jsonValues = {} + jsonValues["redirectUri"] = str(redirectUri) + jsonValues["clientId"] = str(clientId) + + cacheProvider = CdiUtil.bean(CacheProvider) + cacheProvider.put(300, jansKey, jsonValues) + print "PA External Authn. GetPageForStep jansKey '%s' added to cache: %s" % (jansKey, jsonValues) + + requestParameterService = CdiUtil.bean(RequestParameterService) + parametersMap = HashMap() + parametersMap.put("jansKey", jansKey) + callBackUrl = requestParameterService.parametersAsString(parametersMap) + callBackUrl = "%s?%s" % (self.url_step1, callBackUrl) + + print "PA External Authn. GetPageForStep redirect to %s" % callBackUrl + + facesService = CdiUtil.bean(FacesService) + facesService.redirectToExternalURL(callBackUrl) + + return "" + + return "postlogin.xhtml" + + def getNextStep(self, configurationAttributes, requestParameters, step): + return -1 + + def getLogoutExternalUrl(self, configurationAttributes, requestParameters): + return None + + def logout(self, configurationAttributes, requestParameters): + return True diff --git a/external-authn/ropc-external-authn.py b/external-authn/ropc-external-authn.py new file mode 100644 index 0000000000..559860a308 --- /dev/null +++ b/external-authn/ropc-external-authn.py @@ -0,0 +1,145 @@ +# ResourceOwnerPasswordCredentials External Authn + +from org.gluu.model.custom.script.type.owner import ResourceOwnerPasswordCredentialsType +from org.gluu.oxauth.service import AuthenticationService, SessionIdService +from org.gluu.oxauth.model.common import SessionIdState +from org.gluu.oxauth.security import Identity +from org.gluu.service.cdi.util import CdiUtil +from org.gluu.oxauth.model.authorize import AuthorizeRequestParam +from org.gluu.oxauth.model.config import Constants +from org.gluu.util import StringHelper +from java.lang import String +from java.util import Date, HashMap +from org.gluu.service.cache import CacheProvider + +from org.gluu.oxauth.service import RequestParameterService +from org.gluu.oxauth.service.net import HttpService +from javax.faces.context import FacesContext +from org.gluu.jsf2.service import FacesService + +class ResourceOwnerPasswordCredentials(ResourceOwnerPasswordCredentialsType): + def __init__(self, currentTimeMillis): + self.currentTimeMillis = currentTimeMillis + + def init(self, customScript, configurationAttributes): + print "ROPC External Authn. Initializing ..." + print "ROPC External Authn. Initialized successfully" + return True + + def destroy(self, configurationAttributes): + print "ROPC External Authn. Destroying ..." + print "ROPC External Authn. Destroyed successfully" + return True + + def getApiVersion(self): + return 11 + + def authenticate(self, context): + print "ROPC External Authn. Authenticate" + + # Retrieve jansKey from request parameters + jansKey = context.getHttpRequest().getParameter("jansKey") + if (jansKey == None or StringHelper.isEmpty(jansKey)): + print "ROPC External Authn. Authenticate. jansKey not found or empty" + return False + print "ROPC External Authn. Authenticate. jansKey '%s' found in request" % jansKey + + cacheProvider = CdiUtil.bean(CacheProvider) + jsonValues = cacheProvider.get(jansKey) + if (jsonValues == None): + print "ROPC External Authn. Authenticate. Could not find jsonValues in cache" + return False + print "ROPC External Authn. Authenticate. jsonValues found in cache" + + # Do generic authentication + authenticationService = CdiUtil.bean(AuthenticationService) + + username = context.getHttpRequest().getParameter("username") + password = context.getHttpRequest().getParameter("password") + result = authenticationService.authenticate(username, password) + if not result: + print "ROPC External Authn. Authenticate. Could not authenticate user '%s' " % username + return False + + context.setUser(authenticationService.getAuthenticatedUser()) + print "ROPC External Authn. Authenticate. User '%s' authenticated successfully" % username + + # Get cusom parameters from request + customParam1Value = context.getHttpRequest().getParameter("custom1") + customParam2Value = context.getHttpRequest().getParameter("custom2") + + customParameters = {} + customParameters["custom1"] = customParam1Value + customParameters["custom2"] = customParam2Value + print "ROPC External Authn. Authenticate. User '%s'. Creating authenticated session with custom attributes: '%s'" % (username, customParameters) + + session = self.createNewAuthenticatedSession(context, customParameters) + + # This is needed to allow store in token entry sessionId + authenticationService.configureEventUser(session) + print "ROPC External Authn. Authenticate. User '%s'. Created authenticated session: '%s'" % (username, customParameters) + + callbackUrl = self.createCallbackUrl(context, session, jsonValues) + if (callbackUrl != None and StringHelper.isNotEmpty(callbackUrl)): + jsonValues["callbackUrl"] = str(callbackUrl) + cacheProvider.put(300, jansKey, jsonValues) + print "ROPC External Authn. Authenticate. CallbackUrl stored in cache: '%s'" % callbackUrl + + return True + + def createNewAuthenticatedSession(self, context, customParameters={}): + sessionIdService = CdiUtil.bean(SessionIdService) + + user = context.getUser() + client = CdiUtil.bean(Identity).getSessionClient().getClient() + + # Add mandatory session parameters + sessionAttributes = HashMap() + sessionAttributes.put(Constants.AUTHENTICATED_USER, user.getUserId()) + sessionAttributes.put(AuthorizeRequestParam.CLIENT_ID, client.getClientId()) + sessionAttributes.put(AuthorizeRequestParam.PROMPT, "") + + # Add custom session parameters + for key, value in customParameters.iteritems(): + if StringHelper.isNotEmpty(value): + sessionAttributes.put(key, value) + + # Generate authenticated session + sessionId = sessionIdService.generateAuthenticatedSessionId(context.getHttpRequest(), user.getDn(), sessionAttributes) + + print "ROPC External Authn. Generated sessionId. DN: '%s'" % sessionId.getDn() + + return sessionId + + def createCallbackUrl(self, context, sessionId={}, jsonValues={}): + print "ROPC External Authn. CreateCallbackUrl context: '%s'" % context + + # Retrieve redirectUri from cache using jansKey + jsonValRedirectUri = jsonValues.get("redirectUri") + if (jsonValRedirectUri == None): + print "ROPC External Authn. CreateCallbackUrl. redirectUri not found in cache" + return "" + print "ROPC External Authn. CreateCallbackUrl. redirectUri found '%s' in cache" % jsonValRedirectUri + + # Retrieve clientId from cache using jansKey + jsonValClientId = jsonValues.get("clientId") + if (jsonValClientId == None): + print "ROPC External Authn. CreateCallbackUrl. clientId not found in cache" + return "" + print "ROPC External Authn. CreateCallbackUrl. clientId found '%s' in cache" % jsonValClientId + + parameterMap = HashMap() + parameterMap.put("response_type", "code") + parameterMap.put("client_id", jsonValClientId) + parameterMap.put("redirect_uri", jsonValRedirectUri) + parameterMap.put("session_id", sessionId.getId()) + + requestParameterService = CdiUtil.bean(RequestParameterService) + parameterString = requestParameterService.parametersAsString(parameterMap) + + authorizeEndpoint = context.getAppConfiguration().getAuthorizationEndpoint() + jansUrl = '%s?%s' % (authorizeEndpoint, parameterString) + + print "ROPC External Authn. CreateCallbackUrl. jansUrl '%s'" % jansUrl + + return jansUrl \ No newline at end of file diff --git a/external-authn/ut-external-authn.py b/external-authn/ut-external-authn.py new file mode 100644 index 0000000000..d5c1c8ba40 --- /dev/null +++ b/external-authn/ut-external-authn.py @@ -0,0 +1,73 @@ +# UpdateToken External Authn + +from org.gluu.model.custom.script.type.token import UpdateTokenType +from org.gluu.service.cache import CacheProvider +from org.gluu.service.cdi.util import CdiUtil +from org.gluu.util import StringHelper + +class UpdateToken(UpdateTokenType): + def __init__(self, currentTimeMillis): + self.currentTimeMillis = currentTimeMillis + + def init(self, customScript, configurationAttributes): + print "UT External Authn. Initializing ..." + print "UT External Authn. Initialized successfully" + + return True + + def destroy(self, configurationAttributes): + print "UT External Authn. Destroying ..." + print "UT External Authn. Destroyed successfully" + return True + + def getApiVersion(self): + return 11 + + def modifyIdToken(self, jsonWebResponse, context): + + # Retrieve jansKey from cache + jansKey = context.getHttpRequest().getParameter("jansKey") + if (jansKey == None or StringHelper.isEmpty(jansKey)): + print "UT External Authn. ModifyIdToken Could not find jansKey in request" + return False + print "UT External Authn. ModifyIdToken jansKey '%s' found in request" % jansKey + + # Retrieve jsonValues from cache using jansKey + cacheProvider = CdiUtil.bean(CacheProvider) + jsonValues = cacheProvider.get(jansKey) + if (jsonValues == None): + print "UT External Authn. ModifyIdToken Could not find jansKey in cache" + return False + print "UT External Authn. ModifyIdToken jansKey found in cache" + + # Retrieve redirectUri from cache using jansKey + jsonValCallbackUrl = jsonValues.get("callbackUrl") + if (jsonValCallbackUrl == None): + print "UT External Authn. ModifyIdToken Could not find callbackUrl in cache" + return False + print "UT External Authn. ModifyIdToken callbackUrl '%s' found in cache" % jsonValCallbackUrl + + # Decide where to set the callback_uri in header or payload + jsonWebResponse.getHeader().setClaim("callback_url", jsonValCallbackUrl) + jsonWebResponse.getClaims().setClaim("callback_url", jsonValCallbackUrl) + + # Remove jansKey from cache + cacheProvider.remove(jansKey) + print "UT External Authn. ModifyIdToken jansKey removed from cache" + + return True + + def modifyRefreshToken(self, refreshToken, context): + return True + + def modifyAccessToken(self, accessToken, context): + return True + + def getRefreshTokenLifetimeInSeconds(self, context): + return 0 + + def getIdTokenLifetimeInSeconds(self, context): + return 0 + + def getAccessTokenLifetimeInSeconds(self, context): + return 0