go to post Oliver Wilms · Jan 19 Hi, Julius. Thank you for responding to my question. I work for Department of Veterans Affairs. I believe the coding standard including prohibiting argumentless or exclusive NEW is not new. Someone modified old code to become non-interactive. Unfortunately they did not follow coding standard and now it is up to me to fix it. I found where variables are killed. I think a class method using procedure block should be equivalent to exclusive new. All variables are hidden except parameters or public list.
go to post Oliver Wilms · Jan 19 I found the code responsible for Killing variables. I understand why I get <UNDEFINED> when I run the original legacy code WITHOUT the Exclusive NEW.
go to post Oliver Wilms · Jan 17 I recently watched the video and I want to implement something like what is in the demo: https://community.intersystems.com/post/video-selecting-right-source-con...
go to post Oliver Wilms · Jan 13 <assign name="context.SourceName" property="context.SourceName" value="process.%PrimaryRequestHeader.SourceConfigName" action="set" xpos='200' ypos='750' />
go to post Oliver Wilms · Jan 11 I have installed ZPM into %SYS namespace on my IRIS instance running on my work laptop. When I tried zpm "install git-source-control" in %SYS namespace, I see this: ERROR! 'git-source-control' not found in any repository.
go to post Oliver Wilms · Dec 16, 2024 I got this error, because I had the wrong value for Authentication signing algorithm. I changed it from ES512 to RS384.
go to post Oliver Wilms · Dec 15, 2024 I think Code Quality is not working what I copy from iris-interoperability-contest.
go to post Oliver Wilms · Dec 15, 2024 If images do not show in the above Article, please follow this link: iris-http-calls/Setup_OAuth2_Client_for_Epic_on_FHIR.md at master · oliverwilms/iris-http-calls
go to post Oliver Wilms · Dec 13, 2024 I would try something like this: Set tRequest.Https = 1 Set tRequest.SSLCheckServerIdentity = 0 Set tRequest.SSLConfiguration = "ISC.FeatureTracker.SSL.Config"
go to post Oliver Wilms · Nov 20, 2024 I see there is a difference between base64 and base64url encoding ... url - String based data encoding: Base64 vs Base64url - Stack Overflow I added this line in my code: Set jwt = $Translate(jwt,"+/=","-_")
go to post Oliver Wilms · Nov 20, 2024 I have updated flags to 1 to remove CR/LF. I still see Invalid Signature warning in jwt.io
go to post Oliver Wilms · Nov 20, 2024 When I paste the jwt at https://jwt.io/, I see: invalid signature
go to post Oliver Wilms · Nov 20, 2024 I have updated my code as follows: ClassMethod test2() As %Status { #Dim sigJOSE As %DynamicObject #Dim encJOSE As %DynamicObject #Dim claims As %DynamicObject Set ts = $ZTIMESTAMP // 67161,81327.6633447 Set exp = ##class(%OAuth2.Utils).TimeInSeconds(ts,300) Set nbf = ##class(%OAuth2.Utils).TimeInSeconds(ts,0) Set iat = ##class(%OAuth2.Utils).TimeInSeconds(ts,0) Set sigJOSE = {} Set sigJOSE.alg = "RS384" Set sigJOSE.typ = "JWT" Set header = sigJOSE.%ToJSON() Set claims = {} Set claims.iss = "863e73c5-9839-4b54-8205-c9404d2bb762" Set claims.sub = claims.iss Set claims.aud = "https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token" Set claims.jti = "f9eaafba-2e49-11ea-8880-5ce0c5aee679" Set claims.exp = exp Set claims.nbf = nbf Set claims.iat = iat Set payload = claims.%ToJSON() //Set sigJWKS = ..MyKeys() //Set encJWKS = "" //Set tSC = ##class(%Net.JSON.JWT).Create(sigJOSE,{},claims,sigJWKS,encJWKS,.JWT) //Do $System.Status.DisplayError(tSC) Set bitLength = 384 Set flags = 0 Set tData = ##class(%SYSTEM.Encryption).Base64Encode(header,flags)_"."_##class(%SYSTEM.Encryption).Base64Encode(payload,flags) Set key = ..PrivateKey() //Set privKeyPassword = "" Set signature = ##class(%SYSTEM.Encryption).RSASHA3Sign(bitLength, tData, key) Set jwt = tData_"."_##class(%SYSTEM.Encryption).Base64Encode(signature,flags) Set pad = "=" Set jwt = $Translate(jwt,pad,"") Set delim = $Char(13,10) For ii = 1:1:$Length(jwt,delim) { Write $Piece(jwt,delim,ii),! } Quit jwt }
go to post Oliver Wilms · Nov 20, 2024 I had generated a signature in variable x. I forgot the next step: The full JWT is constructed by combining the header, body and signature as follows: base64urlEncoding(header) + '.' + base64urlEncoding(payload) + '.' + base64urlEncoding(signature)
go to post Oliver Wilms · Nov 13, 2024 What scheduled tasks do you launch? How do they interact with the Production?