<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="2377.293" height="976.41199" id="svg2" version="1.1" inkscape:version="0.48.0 r9654" sodipodi:docname="auth.svg"> <defs id="defs4"> <marker inkscape:stockid="Arrow1Lstart" orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible"> <path id="path4297" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)" inkscape:connector-curvature="0" /> </marker> <marker inkscape:stockid="Arrow1Lend" orient="auto" refY="0" refX="0" id="Arrow1Lend" style="overflow:visible"> <path id="path4300" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(-0.8,0,0,-0.8,-10,0)" inkscape:connector-curvature="0" /> </marker> <marker inkscape:stockid="Arrow1Lstart" orient="auto" refY="0" refX="0" id="Arrow1Lstart-7" style="overflow:visible"> <path inkscape:connector-curvature="0" id="path4297-1" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)" /> </marker> <marker inkscape:stockid="Arrow1Lend" orient="auto" refY="0" refX="0" id="Arrow1Lend-6" style="overflow:visible"> <path id="path4300-0" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(-0.8,0,0,-0.8,-10,0)" inkscape:connector-curvature="0" /> </marker> <marker inkscape:stockid="Arrow1Lend" orient="auto" refY="0" refX="0" id="Arrow1Lend-6-7" style="overflow:visible"> <path id="path4300-0-7" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(-0.8,0,0,-0.8,-10,0)" inkscape:connector-curvature="0" /> </marker> <marker inkscape:stockid="Arrow1Lend" orient="auto" refY="0" refX="0" id="Arrow1Lend-6-7-1" style="overflow:visible"> <path id="path4300-0-7-0" d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="matrix(-0.8,0,0,-0.8,-10,0)" inkscape:connector-curvature="0" /> </marker> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.44026374" inkscape:cx="1180.1245" inkscape:cy="459.73804" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:snap-grids="true" inkscape:window-width="1260" inkscape:window-height="731" inkscape:window-x="17" inkscape:window-y="6" inkscape:window-maximized="0" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="true" inkscape:guide-bbox="true"> <inkscape:grid type="xygrid" id="grid2989" empspacing="5" visible="true" enabled="true" snapvisiblegridlinesonly="true" /> </sodipodi:namedview> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title /> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(860.21185,-363.89429)"> <rect style="color:#000000;fill:#afe9e8;fill-opacity:1;stroke:#000000;stroke-width:2.99999881;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7" width="400" height="80.000023" x="-140.21185" y="940.30627" /> <text xml:space="preserve" style="font-size:39.99998474px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="60.696358" y="995.21838" id="text5824-2" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3" x="60.696358" y="995.21838">AuthService</tspan></text> <rect style="color:#000000;fill:#afe9e8;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1" width="400" height="80.000023" x="339.78815" y="940.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="538.88971" y="995.21838" id="text5824-2-1" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0" x="538.88971" y="995.21838">PasswordService</tspan></text> <rect style="color:#000000;fill:#afe9e8;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-4" width="400.00003" height="80.000023" x="-620.21185" y="940.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-420.27045" y="995.21838" id="text5824-2-1-6" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-4" x="-420.27045" y="995.21838">OAuthService</tspan></text> <rect style="color:#000000;fill:#bbe9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-4-1-1" width="200.00005" height="79.999977" x="919.78815" y="600.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="1019.544" y="651.34143" id="text5824-2-9-9" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-05-8" x="1019.544" y="651.34143">Login</tspan></text> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41" width="400" height="80.000023" x="-620.21185" y="660.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-421.11026" y="715.21838" id="text5824-2-1-8" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2" x="-421.11026" y="715.21838">OAuthProcess</tspan></text> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-1" width="400" height="80.000023" x="340.68652" y="660.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="539.78815" y="715.21838" id="text5824-2-1-8-1" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2-5" x="539.78815" y="715.21838">RegistrationModel</tspan></text> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-9" width="399.10165" height="74.91201" x="-459.31351" y="365.39429" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-260.21191" y="420.30637" id="text5824-2-1-8-2" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2-9" x="-260.21191" y="420.30637">AuthWidget</tspan></text> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-9-7" width="400" height="80.000023" x="260.68652" y="365.39426" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="459.78815" y="420.30627" id="text5824-2-1-8-2-0" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2-9-8" x="459.78815" y="420.30627">RegistrationWidget</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="1396.5343" y="680.30627" id="text3318" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3320" x="1396.5343" y="680.30627">Rest of your</tspan><tspan sodipodi:role="line" x="1396.5343" y="730.30627" id="tspan3322">application</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="823.78821" y="420.30627" id="text5824-2-1-8-2-0-5" sodipodi:linespacing="125%"><tspan sodipodi:role="line" x="823.78821" y="420.30627" style="font-size:32px" id="tspan3356">+ some more</tspan><tspan sodipodi:role="line" x="823.78821" y="460.30627" id="tspan3349" style="font-size:32px" /></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-260.21185" y="480.3063" id="text3358" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3360" x="-260.21185" y="480.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans">Sign in / Sign out</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="459.78815" y="480.30627" id="text3358-9" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3360-1" x="459.78815" y="480.30627" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans">Sign up</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-420.21179" y="1060.3063" id="text3358-7" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3360-0" x="-420.21179" y="1060.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans">OAuth 2.0</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="59.788162" y="1060.3063" id="text3358-7-8" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3360-0-1" x="59.788162" y="1060.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans"> Auth tokens ("remember-me")</tspan><tspan sodipodi:role="line" x="59.788162" y="1100.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4651">Email verification</tspan><tspan sodipodi:role="line" x="59.788162" y="1140.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4649" /></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="539.78815" y="1060.3063" id="text3358-7-8-3" sodipodi:linespacing="125%"><tspan sodipodi:role="line" x="539.78815" y="1060.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4651-4"> Salted hashing</tspan><tspan sodipodi:role="line" x="539.78815" y="1100.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan7477">Strength checking</tspan><tspan sodipodi:role="line" x="539.78815" y="1140.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4682">Attempt throttling</tspan><tspan sodipodi:role="line" x="539.78815" y="1180.3063" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4649-8" /></text> <rect style="color:#000000;fill:#bbe9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-1-3" width="400" height="80.000023" x="820.68652" y="745.39417" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="1019.7882" y="800.30627" id="text5824-2-1-8-1-3" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2-5-6" x="1019.7882" y="800.30627">UserDatabase</tspan></text> <path style="color:#000000;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8,8;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 1540,565.81177 -1680,0" id="path4710" inkscape:connector-curvature="0" transform="translate(-643.46574,314.49453)" sodipodi:nodetypes="cc" /> <path style="color:#000000;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8,8;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 1540,225.81177 -1680,0" id="path4712" inkscape:connector-curvature="0" transform="translate(-643.46574,314.49453)" sodipodi:nodetypes="cc" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="-419.6181" y="780.30627" id="text3358-4" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan3360-12" x="-419.6181" y="780.30627" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans">OAuth 2.0 protocol</tspan><tspan sodipodi:role="line" x="-419.6181" y="820.30627" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4735">"OpenIDConnect"</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="540.68658" y="780.30627" id="text3358-4-2" sodipodi:linespacing="125%"><tspan sodipodi:role="line" x="540.68658" y="780.30627" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4735-6">Registration logic</tspan></text> <text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="-752.79388" y="420.30637" id="text4763" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4765" x="-752.79388" y="420.30637" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold">Widgets</tspan></text> <text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="-753.78607" y="715.21838" id="text4763-7" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4765-5" x="-753.78607" y="715.21838" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold">Models</tspan></text> <text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="-753.46576" y="995.21838" id="text4763-7-2" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4765-5-2" x="-753.46576" y="995.21838" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold">Services</tspan></text> <path style="color:#000000;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Lstart-7);marker-end:url(#Arrow1Lend-6-7-1);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 1800,385.81177 100,0" id="path4811" inkscape:connector-curvature="0" transform="translate(-643.46574,314.49453)" /> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-9-7-2" width="100.00002" height="80.000023" x="856.53424" y="1060.3063" /> <rect style="color:#000000;fill:#bbe9af;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-1-3-0" width="99.999962" height="80.000023" x="856.5343" y="1160.3063" /> <rect style="color:#000000;fill:#afe9e8;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-8" width="100.00002" height="80.000023" x="856.53424" y="1260.3063" /> <text xml:space="preserve" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="975.383" y="1220.3063" id="text7431" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan7433" x="975.383" y="1220.3063" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">bound to session</tspan></text> <text xml:space="preserve" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="976.12994" y="1320.3063" id="text7431-3" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan7433-0" x="976.12994" y="1320.3063" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">shared</tspan></text> <text xml:space="preserve" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="976.53424" y="1120.3063" id="text7431-3-2" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan7433-0-1" x="976.53424" y="1120.3063" style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">transient in session</tspan></text> <rect style="color:#000000;fill:#dde9af;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect5822-7-1-41-1-0" width="400" height="80.000023" x="-140.21185" y="660.30627" /> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="58.889778" y="715.21838" id="text5824-2-1-8-1-39" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan5826-3-0-2-5-9" x="58.889778" y="715.21838">AuthModel</tspan></text> <text xml:space="preserve" style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="59.788216" y="780.30627" id="text3358-4-2-9" sodipodi:linespacing="125%"><tspan sodipodi:role="line" x="59.788216" y="780.30627" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4735-6-1">Authentication logic</tspan></text> </g> </svg>