You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+37Lines changed: 37 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,43 @@ Actually, interestingly, we might be able to use openssh's ssh-agent to do this,
43
43
44
44
We should consider destination constraining the target host for these agents. Need to think about abuse vectors if we don't do that.
45
45
46
+
## Notes
47
+
```mermaid
48
+
sequenceDiagram
49
+
box ssh invocation on a client
50
+
participant ssh
51
+
participant match
52
+
participant broker
53
+
end
54
+
55
+
box out on the internet
56
+
participant ca
57
+
participant policy
58
+
end
59
+
60
+
ssh ->> match: Match exec ...
61
+
match ->> broker: {matchdata}
62
+
63
+
create participant auth
64
+
broker ->> auth: {state}
65
+
66
+
destroy auth
67
+
auth ->> broker: {token, state, error}
68
+
69
+
broker ->> ca: {token, pubkey}
70
+
ca ->> policy: {token, pubkey}
71
+
policy ->> ca: {cert-params}
72
+
ca ->> broker: {cert}
73
+
74
+
create participant agent
75
+
broker ->> agent: create agent
76
+
broker ->> match: {true/false, error}
77
+
match ->> ssh: {true/false}
78
+
ssh ->> agent: list keys
79
+
agent ->> ssh: {cert, pubkey}
80
+
ssh ->> agent: sign-with-cert
81
+
```
82
+
46
83
## TODO
47
84
48
85
-**Implement a less strict netstring parser**: The current auth plugin protocol uses the `markdingo/netstring` library which strictly rejects whitespace between netstrings. This makes debugging auth plugins difficult since developers can't use `println()` for debugging output. We should implement a custom netstring parser that tolerates whitespace (spaces, tabs, `\n`, `\r`) between netstrings while still being strict about the netstring format itself. This would maintain protocol compatibility while significantly improving developer experience when writing auth plugins.
0 commit comments