1
0
mirror of https://github.com/sasjs/server.git synced 2026-04-09 23:23:13 +00:00
Files
server/SASjsServer.svg
2022-02-10 18:38:24 +05:00

3 lines
37 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1665px" height="1352px" viewBox="-0.5 -0.5 1665 1352" content="&lt;mxfile&gt;&lt;diagram id=&quot;HJy_QFGaI9JSrArARLup&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="774" y="0" width="360" height="1250" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 7px; margin-left: 775px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 30px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">SASjs Server</div></div></div></foreignObject><text x="954" y="37" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="30px" text-anchor="middle">SASjs Server</text></switch></g><rect x="794" y="90" width="320" height="330" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 97px; margin-left: 795px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 22px">Internal Authentication</font></div></div></div></foreignObject><text x="954" y="109" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Internal Authentication</text></switch></g><ellipse cx="24" cy="40" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 24 50 L 24 83.33 M 24 56.67 L 4 56.67 M 24 56.67 L 44 56.67 M 24 83.33 L 4 110 M 24 83.33 L 44 110" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 117px; margin-left: 24px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">End user</div></div></div></foreignObject><text x="24" y="129" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">End us...</text></switch></g><path d="M 214 173 L 852.63 172.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 857.88 172.5 L 850.88 176.01 L 852.63 172.5 L 850.88 169.01 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 172px; margin-left: 497px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px ; line-height: 18px"><span style="color: #a31515">/SASjsApi/auth/authorize<br />(username,password,clientId)</span></div></div></div></div></foreignObject><text x="497" y="175" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">/SASjsApi/auth/authorize...</text></switch></g><path d="M 858.62 228.66 L 220.37 229.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 215.12 230 L 222.11 226.48 L 220.37 229.99 L 222.13 233.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 229px; margin-left: 476px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#a31515" face="menlo, monaco, courier new, monospace"><span style="font-size: 12px">`code`</span></font></div></div></div></foreignObject><text x="476" y="233" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">`code`</text></switch></g><ellipse cx="34" cy="1260" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 34 1270 L 34 1303.33 M 34 1276.67 L 14 1276.67 M 34 1276.67 L 54 1276.67 M 34 1303.33 L 14 1330 M 34 1303.33 L 54 1330" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1337px; margin-left: 34px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">End user</div></div></div></foreignObject><text x="34" y="1349" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">End us...</text></switch></g><path d="M 214 313 L 852.63 312.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 857.88 312.5 L 850.88 316.01 L 852.63 312.5 L 850.88 309.01 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 312px; margin-left: 497px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><span style="color: #a31515">/SASjsApi/auth/token</span></div><span style="color: #a31515">(clientId,code)</span></div></div></div></div></foreignObject><text x="497" y="315" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">/SASjsApi/auth/token(clientId,code)</text></switch></g><path d="M 860.71 371.45 L 220.37 372.98" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 215.12 373 L 222.11 369.48 L 220.37 372.98 L 222.13 376.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 372px; margin-left: 476px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#a31515" face="menlo, monaco, courier new, monospace"><span style="font-size: 12px">`</span></font><span style="color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px">accessToken</span><span style="font-size: 12px ; color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace">` &amp; `</span><span style="color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px">refreshToken</span><span style="color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px">`</span></div></div></div></foreignObject><text x="476" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">`accessToken` &amp; `refreshToken`</text></switch></g><path d="M 33.67 1250 L 24.33 110" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="stroke"/><rect x="859" y="150" width="190" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 195px; margin-left: 860px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span>Validates</span><br /><span>username/password/clientId</span><br /><span>and issue short</span><br /><span>Authorization code</span></div></div></div></foreignObject><text x="954" y="199" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Validates...</text></switch></g><rect x="859" y="290" width="190" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 335px; margin-left: 860px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Validates<br />clientId &amp; authorization code<br />and issue<br />Access Token &amp; Refresh Token</div></div></div></foreignObject><text x="954" y="339" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Validates...</text></switch></g><rect x="794" y="1070" width="320" height="150" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 1077px; margin-left: 795px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Protected APIs<br />Authenticate requests <br />with provided Bearer Token</div></div></div></foreignObject><text x="954" y="1089" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Protected APIs...</text></switch></g><path d="M 224 1128 L 783.79 1127.6" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 789.04 1127.6 L 782.04 1131.11 L 783.79 1127.6 L 782.04 1124.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1127px; margin-left: 473px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><font color="#a31515">Request with Access Token</font></div></div></div></div></div></foreignObject><text x="473" y="1130" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Request with Access Token</text></switch></g><rect x="154" y="50" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 80px; margin-left: 155px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Browser</div></div></div></foreignObject><text x="214" y="87" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">Browser</text></switch></g><rect x="154" y="1260" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1290px; margin-left: 155px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Browser</div></div></div></foreignObject><text x="214" y="1297" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">Browser</text></switch></g><path d="M 214 1260 L 214 110" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="794" y="450" width="320" height="560" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 457px; margin-left: 795px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 22px">Okta Authentication</font></div></div></div></foreignObject><text x="954" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Okta Authentication</text></switch></g><path d="M 214 523 L 850.16 525.73" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 855.41 525.76 L 848.4 529.23 L 850.16 525.73 L 848.43 522.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 523px; margin-left: 495px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px ; line-height: 18px"><span style="color: #a31515">/SASjsApi/auth/okta/authorize<br /></span></div></div></div></div></foreignObject><text x="495" y="527" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">/SASjsApi/auth/okta/authorize
</text></switch></g><rect x="859" y="500" width="190" height="280" rx="28.5" ry="28.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 640px; margin-left: 860px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">redirects to okta server<br /><br /><br /><br />OKTA OIDC middleware<br />https://github.com/okta/okta-oidc-middleware<br /><br /><br /><br />OKTA nodeJS Express implementation<br />https://github.com/okta/samples-nodejs-express-4/tree/master/okta-hosted-login<br /></div></div></div></foreignObject><text x="954" y="644" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">redirects to okta server...</text></switch></g><path d="M 954 950 L 954 1063.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 954 1068.88 L 950.5 1061.88 L 954 1063.63 L 957.5 1061.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="859" y="860" width="190" height="90" rx="13.5" ry="13.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 905px; margin-left: 860px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Validates express session <br />through OKTA OIDC middleware</div></div></div></foreignObject><text x="954" y="909" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Validates express session...</text></switch></g><rect x="1344" y="450" width="320" height="380" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 457px; margin-left: 1345px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 22px">Okta Authorization Server<br /></span></div></div></div></foreignObject><text x="1504" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Okta Authorization Server
</text></switch></g><rect x="1409" y="500" width="190" height="280" rx="28.5" ry="28.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 1049.38 534.44 L 1397.63 534.01" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1402.88 534 L 1395.89 537.51 L 1397.63 534.01 L 1395.88 530.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 534px; margin-left: 1232px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px">/authorize</span></div></div></div></foreignObject><text x="1232" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">/authorize</text></switch></g><path d="M 1405.96 581.48 L 220.37 581" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 215.12 581 L 222.12 577.5 L 220.37 581 L 222.12 584.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 585px; margin-left: 573px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">302 redirect to authentication prompt </div></div></div></foreignObject><text x="573" y="592" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">302 redirect to authentication prompt </text></switch></g><path d="M 214 650 L 1402.63 650.48" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1407.88 650.48 L 1400.88 653.98 L 1402.63 650.48 L 1400.88 646.98 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 645px; margin-left: 531px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Authentication &amp; Consent</div></div></div></foreignObject><text x="531" y="652" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">Authentication &amp; Consent</text></switch></g><path d="M 1409 690.12 L 1054.42 690.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1049.17 690.12 L 1056.17 686.62 L 1054.42 690.12 L 1056.17 693.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 692px; margin-left: 1246px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Authorization Code to redirect uri</div></div></div></foreignObject><text x="1246" y="696" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">Authorization Code to redirect uri</text></switch></g><path d="M 1048.05 720 L 1402.63 720" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1407.88 720 L 1400.88 723.5 L 1402.63 720 L 1400.88 716.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 721px; margin-left: 1234px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="color: rgb(163 , 21 , 21) ; font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px">/token</span></div></div></div></foreignObject><text x="1234" y="725" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">/token</text></switch></g><path d="M 1409.95 750 L 1055.37 750" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1050.12 750 L 1057.12 746.5 L 1055.37 750 L 1057.12 753.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 752px; margin-left: 1247px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Access Token</div></div></div></foreignObject><text x="1247" y="756" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">Access Token</text></switch></g><path d="M 214 910 L 852.63 910" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 857.88 910 L 850.88 913.5 L 852.63 910 L 850.88 906.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 909px; margin-left: 497px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; font-size: 12px ; line-height: 18px"><div style="font-family: &quot;menlo&quot; , &quot;monaco&quot; , &quot;courier new&quot; , monospace ; line-height: 18px"><font color="#a31515">Request with OKTA mechanism</font></div></div></div></div></div></foreignObject><text x="497" y="912" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Request with OKTA mechanism</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>