blob: e959d61190fccf7a9570e1024fd7eafffe51ad40 [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="369.6px" preserveAspectRatio="none" style="width:1081px;height:369px;" version="1.1" viewBox="0 0 1081 369" width="1081.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1qbr6ythy67tc" 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="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="216.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="318.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="977.4" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="321.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="324" x2="324" y1="45.9563" y2="321.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="983.4" x2="983.4" y1="45.9563" y2="321.8719"/><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="344.666">Device</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="254.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="262.8" y="27.5941">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="254.4" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="262.8" y="344.666">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="893.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="901.8" y="27.5941">Credentials Service</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="893.4" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="901.8" y="344.666">Credentials Service</text><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="216.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="318.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="977.4" y="118.275"/><polygon fill="#A80036" points="304.2,78.5156,316.2,83.3156,304.2,88.1156,309,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="311.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="247.2" x="57" y="77.2365">CONNECT(username, password)</text><polygon fill="#A80036" points="963,113.475,975,118.275,963,123.075,967.8,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="330.6" x2="970.2" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="624" x="339" y="112.1959">transfer(subject: "get", body: {"type": "hashed-password", "auth-id": $username})</text><path d="M898.8,133.875 L898.8,163.875 L1063.2,163.875 L1063.2,145.875 L1051.2,133.875 L898.8,133.875 " fill="#FBFB77" filter="url(#f1qbr6ythy67tc)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1051.2,133.875 L1051.2,145.875 L1063.2,145.875 L1051.2,133.875 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="906" y="154.3553">lookup credentials</text><polygon fill="#A80036" points="343.8,195.3937,331.8,200.1938,343.8,204.9938,339,200.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="336.6" x2="982.2" y1="200.1938" y2="200.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="310.8" x="351" y="194.1146">transfer(status: "200", body: credentials)</text><path d="M70.8,215.7938 L70.8,263.7938 L573.6,263.7938 L573.6,227.7938 L561.6,215.7938 L70.8,215.7938 " fill="#FBFB77" filter="url(#f1qbr6ythy67tc)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M561.6,215.7938 L561.6,227.7938 L573.6,227.7938 L561.6,215.7938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="349.2" x="78" y="236.274">1.) Apply (salted) hash-algorithm to password</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="477.6" x="78" y="254.4334">2.) Compare result with the hashed-password from credentials</text><polygon fill="#A80036" points="61.8,295.4719,49.8,300.2719,61.8,305.0719,57,300.2719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="323.4" y1="300.2719" y2="300.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="78" x="69" y="294.1928">CONNACK</text><!--
@startuml
scale 1.2
Device -> "MQTT Adapter"++: CONNECT(username, password)
"MQTT Adapter" -> "Credentials Service"++: transfer(subject: "get", body: {"type": "hashed-password", "auth-id": $username})
note over "Credentials Service": lookup credentials
"Credentials Service" -> "MQTT Adapter"- -: transfer(status: "200", body: credentials)
note over "MQTT Adapter"
1.) Apply (salted) hash-algorithm to password
2.) Compare result with the hashed-password from credentials
end note
"MQTT Adapter" -> Device- -: CONNACK
@enduml
PlantUML version 1.2019.07beta1(Unknown compile time)
(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>