blob: 64a6b2fca9aa8b3c15bf4868f460a66b35f5923b [file] [log] [blame]
<?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]
@startuml
skinparam BoxPadding 10
scale 1.2
participant "Device"
participant "Hono Protocol Adapter" as PA
box "Device Registry"
participant "Tenant\nAPI" as tenant
participant "Device Registration\nAPI" as reg
participant "Credentials\nAPI" as cred
end box
Device -> PA++: connect(X.509 Client Cert)
== Query Tenant ==
PA -> tenant++: transfer(subject: "get", body: {"subject-dn": $caDN})
PA <- tenant- -: transfer(status: "200", ..., body: tenant info)
== Query Credentials ==
PA -> cred++: transfer(subject: "get", body: {"type": "x509-cert", "auth-id": $subjectDN, "client-certificate": $cert})
alt First Time
cred -> cred: Create\nCredentials and \nRegistration\nInformation
note left: If device Registry does not find credentials
PA <- cred- -: transfer(status: "201", body: credentials info)
else Following requests
PA <- cred- -: transfer(status: "200", body: credentials info)
end
== Query Registration Information ==
PA -> reg++: transfer(subject: "assert", device-id)
PA <- reg- -: transfer(status: "200", ..., body: registration status)
@enduml
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
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>