-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathfederation_access.go
More file actions
57 lines (49 loc) · 2.02 KB
/
Copy pathfederation_access.go
File metadata and controls
57 lines (49 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package kata
import (
"context"
"errors"
)
// ErrFederationAdmissionLimited asks Kata to reject an authenticated
// federation request with 429 before reading a large request body. Embedding
// hosts may return it when their bounded request admission is full.
var ErrFederationAdmissionLimited = errors.New("kata: federation request admission limited")
// FederationCapability is the transport authority requested by one
// authenticated federation operation.
type FederationCapability string
// Federation transport capabilities.
const (
FederationCapabilityPull FederationCapability = "pull"
FederationCapabilityPush FederationCapability = "push"
FederationCapabilityClaim FederationCapability = "claim"
)
// FederationOperation describes the authenticated transport operation. ID is
// a stable Kata operation identifier. Mutation is true when the operation can
// change stored task, cursor, or lease state.
type FederationOperation struct {
ID string
Mutation bool
}
// FederationAccessRequest contains the Kata-authenticated enrollment and
// project facts supplied to a mounting application's additional authorization
// boundary. It never contains the plaintext credential or its stored hash.
type FederationAccessRequest struct {
Enrollment FederationEnrollment
Project Project
Capability FederationCapability
Operation FederationOperation
}
// FederationAccessDecision carries the in-transaction authorization check for
// a federation mutation. Read-only operations may return the zero value.
type FederationAccessDecision struct {
TransactionFence TransactionFence
}
// FederationAccessController adds host-owned authorization after Kata has
// authenticated a project-scoped enrollment. Returning ErrAccessDenied makes
// the credential unusable without disclosing which outside authority changed.
// Mutating operations require a TransactionFence in the returned decision.
type FederationAccessController interface {
AuthorizeFederation(
context.Context,
FederationAccessRequest,
) (FederationAccessDecision, error)
}