| <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="787.2px" preserveAspectRatio="none" style="width:1238px;height:787px;" version="1.1" viewBox="0 0 1238 787" width="1238.4px" zoomAndPan="magnify"><defs><filter height="300%" id="f10qk0o7i5gq0t" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#DDDDDD" height="769.5" style="stroke: #A80036; stroke-width: 1.2;" width="461.4" x="672" y="4.8"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="138" x="833.7" y="19.2803">Device Registry</text><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="570.9563" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="273" y="127.0313"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="711" y="213.75"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="854.4" y="652.2281"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="168.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1065" y="335.4281"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="213.2813" style="stroke: #000000; stroke-width: 2.4;" width="1049.4" x="162.6" y="353.4281"/><rect fill="#FFFFFF" height="52.725" style="stroke: none; stroke-width: 1.2;" width="1049.4" x="162.6" y="513.9844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="89.6719" y2="708.7875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="279" x2="279" y1="89.6719" y2="708.7875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="716.4" x2="716.4" y1="89.6719" y2="708.7875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="860.4" x2="860.4" y1="89.6719" y2="708.7875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1071" x2="1071" y1="89.6719" y2="708.7875"/><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="47.3156"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="71.3098">Device</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="707.5875"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="731.5816">Device</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="174.6" y="47.3156"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="183" y="71.3098">Hono Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="174.6" y="707.5875"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="183" y="731.5816">Hono Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="75.6" x="676.8" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="58.8" x="685.2" y="51.7535">Tenant</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="702" y="71.3098">API</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="75.6" x="676.8" y="707.5875"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="58.8" x="685.2" y="731.5816">Tenant</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="702" y="751.1379">API</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="177.6" x="769.2" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="160.8" x="777.6" y="51.7535">Device Registration</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="845.4" y="71.3098">API</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="177.6" x="769.2" y="707.5875"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="160.8" x="777.6" y="731.5816">Device Registration</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="845.4" y="751.1379">API</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="110.4" x="1013.4" y="27.7594"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="93.6" x="1021.8" y="51.7535">Credentials</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="1056" y="71.3098">API</text><rect fill="#FEFECE" filter="url(#f10qk0o7i5gq0t)" height="55.9125" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="110.4" x="1013.4" y="707.5875"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="93.6" x="1021.8" y="731.5816">Credentials</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="25.2" x="1056" y="751.1379">API</text><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="570.9563" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="273" y="127.0313"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="711" y="213.75"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="854.4" y="652.2281"/><rect fill="#FFFFFF" filter="url(#f10qk0o7i5gq0t)" height="168.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="1065" y="335.4281"/><polygon fill="#A80036" points="258.6,122.2312,270.6,127.0313,258.6,131.8312,263.4,127.0313" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="265.8" y1="127.0313" y2="127.0313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="201.6" x="57" y="120.9521">connect(X.509 Client Cert)</text><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="3.6" style="stroke: #EEEEEE; stroke-width: 1.2;" width="1221" x="3.6" y="161.3109"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="161.3109" y2="161.3109"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="164.9109" y2="164.9109"/><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="27.7594" style="stroke: #000000; stroke-width: 2.4;" width="140.4" x="543.9" y="148.6313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="117.6" x="551.1" y="167.9115">Query Tenant</text><polygon fill="#A80036" points="696.6,208.95,708.6,213.75,696.6,218.55,701.4,213.75" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="285" x2="703.8" y1="213.75" y2="213.75"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="403.2" x="293.4" y="207.6709">transfer(subject: "get", body: {"subject-dn": $caDN})</text><polygon fill="#A80036" points="298.2,243.9094,286.2,248.7094,298.2,253.5094,293.4,248.7094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="291" x2="715.8" y1="248.7094" y2="248.7094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="333.6" x="305.4" y="242.6303">transfer(status: "200", ..., body: tenant info)</text><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="3.6" style="stroke: #EEEEEE; stroke-width: 1.2;" width="1221" x="3.6" y="282.9891"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="282.9891" y2="282.9891"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="286.5891" y2="286.5891"/><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="27.7594" style="stroke: #000000; stroke-width: 2.4;" width="181.2" x="523.5" y="270.3094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="530.7" y="289.5896">Query Credentials</text><polygon fill="#A80036" points="1050.6,330.6281,1062.6,335.4281,1050.6,340.2281,1055.4,335.4281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="285" x2="1057.8" y1="335.4281" y2="335.4281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="757.2" x="293.4" y="329.349">transfer(subject: "get", body: {"type": "x509-cert", "auth-id": $subjectDN, "client-certificate": $cert})</text><path d="M162.6,353.4281 L239.4,353.4281 L239.4,361.8281 L227.4,373.8281 L162.6,373.8281 L162.6,353.4281 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.2;"/><rect fill="none" height="213.2813" style="stroke: #000000; stroke-width: 2.4;" width="1049.4" x="162.6" y="353.4281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="22.8" x="180.6" y="369.1084">alt</text><text fill="#000000" font-family="sans-serif" font-size="13.2" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88.8" x="257.4" y="368.0807">[First Time]</text><line style="stroke: #A80036; stroke-width: 1.2;" x1="1077" x2="1127.4" y1="453.825" y2="453.825"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1127.4" x2="1127.4" y1="453.825" y2="469.425"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1078.2" x2="1127.4" y1="469.425" y2="469.425"/><polygon fill="#A80036" points="1090.2,464.625,1078.2,469.425,1090.2,474.225,1085.4,469.425" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="51.6" x="1085.4" y="393.2678">Create</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="120" x="1085.4" y="411.4271">Credentials and</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="91.2" x="1085.4" y="429.5865">Registration</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="87.6" x="1085.4" y="447.7459">Information</text><path d="M706.8,409.0266 L706.8,439.0266 L1053.6,439.0266 L1053.6,421.0266 L1041.6,409.0266 L706.8,409.0266 " fill="#FBFB77" filter="url(#f10qk0o7i5gq0t)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1041.6,409.0266 L1041.6,421.0266 L1053.6,421.0266 L1041.6,409.0266 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="321.6" x="714" y="429.5068">If device Registry does not find credentials</text><polygon fill="#A80036" points="298.2,499.5844,286.2,504.3844,298.2,509.1844,293.4,504.3844" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="291" x2="1069.8" y1="504.3844" y2="504.3844"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="343.2" x="305.4" y="498.3053">transfer(status: "201", body: credentials info)</text><line style="stroke: #000000; stroke-width: 1.2; stroke-dasharray: 2.0,2.0;" x1="162.6" x2="1212" y1="515.1844" y2="515.1844"/><text fill="#000000" font-family="sans-serif" font-size="13.2" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="159.6" x="168.6" y="527.4369">[Following requests]</text><polygon fill="#A80036" points="298.2,552.3094,286.2,557.1094,298.2,561.9094,293.4,557.1094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="291" x2="1069.8" y1="557.1094" y2="557.1094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="343.2" x="305.4" y="551.0303">transfer(status: "200", body: credentials info)</text><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="3.6" style="stroke: #EEEEEE; stroke-width: 1.2;" width="1221" x="3.6" y="599.7891"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="599.7891" y2="599.7891"/><line style="stroke: #000000; stroke-width: 1.2;" x1="3.6" x2="1224.6" y1="603.3891" y2="603.3891"/><rect fill="#EEEEEE" filter="url(#f10qk0o7i5gq0t)" height="27.7594" style="stroke: #000000; stroke-width: 2.4;" width="296.4" x="465.9" y="587.1094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="273.6" x="473.1" y="606.3896">Query Registration Information</text><polygon fill="#A80036" points="840,647.4281,852,652.2281,840,657.0281,844.8,652.2281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="285" x2="847.2" y1="652.2281" y2="652.2281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="274.8" x="293.4" y="646.149">transfer(subject: "assert", device-id)</text><polygon fill="#A80036" points="298.2,682.3875,286.2,687.1875,298.2,691.9875,293.4,687.1875" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="291" x2="859.2" y1="687.1875" y2="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="391.2" x="305.4" y="681.1084">transfer(status: "200", ..., body: registration status)</text><!--MD5=[5723191dc61232a9f18dcb3faf30bdcb] |
| participant "Hono Protocol Adapter" as PA |
| participant "Tenant\nAPI" as tenant |
| participant "Device Registration\nAPI" as reg |
| participant "Credentials\nAPI" as cred |
| Device -> PA++: connect(X.509 Client Cert) |
| PA -> tenant++: transfer(subject: "get", body: {"subject-dn": $caDN}) |
| PA <- tenant- -: transfer(status: "200", ..., body: tenant info) |
| PA -> cred++: transfer(subject: "get", body: {"type": "x509-cert", "auth-id": $subjectDN, "client-certificate": $cert}) |
| cred -> cred: Create\nCredentials and \nRegistration\nInformation |
| note left: If device Registry does not find credentials |
| PA <- cred- -: transfer(status: "201", body: credentials info) |
| PA <- cred- -: transfer(status: "200", body: credentials info) |
| == Query Registration Information == |
| PA -> reg++: transfer(subject: "assert", device-id) |
| PA <- reg- -: transfer(status: "200", ..., body: registration status) |
| PlantUML version 1.2019.13(Tue Dec 10 17:18:29 UTC 2019) |
| (GPL source distribution) |
| Java Runtime: Java(TM) SE Runtime Environment |
| JVM: Java HotSpot(TM) 64-Bit Server VM |
| Java Version: 1.7.0_25-b15 |