@@ -14,24 +14,24 @@ import (
1414type AuthResult struct {
1515 orgID string
1616 workflowOwner string
17- Digest string
18- ExpiresAt int64
17+ digest string
18+ expiresAt int64
1919}
2020
2121func NewAllowListBasedAuthResult (workflowOwner , digest string , expiresAt int64 ) * AuthResult {
2222 return & AuthResult {
2323 workflowOwner : workflowOwner ,
24- Digest : digest ,
25- ExpiresAt : expiresAt ,
24+ digest : digest ,
25+ expiresAt : expiresAt ,
2626 }
2727}
2828
2929func NewJWTBasedAuthResult (orgID , workflowOwner , digest string , expiresAt int64 ) * AuthResult {
3030 return & AuthResult {
3131 orgID : orgID ,
3232 workflowOwner : workflowOwner ,
33- Digest : digest ,
34- ExpiresAt : expiresAt ,
33+ digest : digest ,
34+ expiresAt : expiresAt ,
3535 }
3636}
3737
@@ -46,6 +46,23 @@ func (a *AuthResult) AuthorizedOwner() string {
4646 return a .workflowOwner
4747}
4848
49+ // GetDigest returns the request digest used for replay protection.
50+ func (a * AuthResult ) GetDigest () string {
51+ if a == nil {
52+ return ""
53+ }
54+ return a .digest
55+ }
56+
57+ // GetExpiresAt returns the unix timestamp (UTC) after which this
58+ // authorization is no longer valid.
59+ func (a * AuthResult ) GetExpiresAt () int64 {
60+ if a == nil {
61+ return 0
62+ }
63+ return a .expiresAt
64+ }
65+
4966// GetUntrustedWorkflowOwner returns the workflow owner only for JWTBasedAuth results.
5067func (a * AuthResult ) GetUntrustedWorkflowOwner () (string , error ) {
5168 if a == nil {
@@ -93,11 +110,11 @@ func (a *authorizer) AuthorizeRequest(ctx context.Context, req jsonrpc.Request[j
93110 a .lggr .Errorw ("auth mechanism returned nil auth result" , "method" , req .Method , "requestID" , req .ID , "hasAuth" , req .Auth != "" )
94111 return nil , err
95112 }
96- if err := a .replayGuard .CheckAndRecord (authResult .Digest , authResult .ExpiresAt ); err != nil {
97- a .lggr .Debugw ("replay guard rejected request" , "method" , req .Method , "requestID" , req .ID , "owner" , authResult .AuthorizedOwner (), "digest" , authResult .Digest , "expiresAt" , authResult .ExpiresAt , "hasAuth" , req .Auth != "" , "error" , err )
113+ if err := a .replayGuard .CheckAndRecord (authResult .GetDigest () , authResult .GetExpiresAt () ); err != nil {
114+ a .lggr .Debugw ("replay guard rejected request" , "method" , req .Method , "requestID" , req .ID , "owner" , authResult .AuthorizedOwner (), "digest" , authResult .GetDigest () , "expiresAt" , authResult .GetExpiresAt () , "hasAuth" , req .Auth != "" , "error" , err )
98115 return nil , err
99116 }
100- a .lggr .Debugw ("request authorized" , "method" , req .Method , "requestID" , req .ID , "owner" , authResult .AuthorizedOwner (), "digest" , authResult .Digest , "expiresAt" , authResult .ExpiresAt , "hasAuth" , req .Auth != "" )
117+ a .lggr .Debugw ("request authorized" , "method" , req .Method , "requestID" , req .ID , "owner" , authResult .AuthorizedOwner (), "digest" , authResult .GetDigest () , "expiresAt" , authResult .GetExpiresAt () , "hasAuth" , req .Auth != "" )
101118 return authResult , nil
102119}
103120
0 commit comments