You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/cmd
Cedric Kienzler b34a2bdb22
cmd/tsidp: add groups claim to tsidp (#15127)
* cmd/tsidp: add groups claim to tsidp

This feature adds support for a `groups` claim in tsidp using the grants
syntax:

```json
{
  "grants": [
    {
      "src": ["group:admins"],
      "dst": ["*"],
      "ip":  ["*"],
      "app": {
        "tailscale.com/cap/tsidp": [
          {
            "groups": ["admin"]
          }
        ]
      }
    },
    {
      "src": ["group:reader"],
      "dst": ["*"],
      "ip":  ["*"],
      "app": {
        "tailscale.com/cap/tsidp": [
          {
            "groups": ["reader"]
          }
        ]
      }
    }
  ]
}
```

For #10263

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>

* cmd/tsidp: refactor cap/tsidp to allow extraClaims

This commit refactors the `capRule` struct to allow specifying arbitrary
extra claims:

```json
{
  "src": ["group:reader"],
  "dst": ["*"],
  "ip":  ["*"],
  "app": {
    "tailscale.com/cap/tsidp": [
      {
        "extraClaims": {
          "groups": ["reader"],
          "entitlements": ["read-stuff"],
        },
      }
    ]
  }
}
```

Overwriting pre-existing claims cannot be modified/overwritten.

Also adding more unit-testing

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>

* Update cmd/tsidp/tsidp.go

Signed-off-by: cedi <cedi@users.noreply.github.com>

* Update cmd/tsidp/tsidp_test.go

Co-authored-by: Patrick O'Doherty <hello@patrickod.com>
Signed-off-by: Cedric Kienzler <cedi@users.noreply.github.com>

* Update cmd/tsidp/tsidp_test.go

Co-authored-by: Patrick O'Doherty <hello@patrickod.com>
Signed-off-by: Cedric Kienzler <cedi@users.noreply.github.com>

* Fix logical error in test case

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>

* fix error printing for failed to unmarshal capability in tsidp

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>

* clarify doc string for withExtraClaims

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>

---------

Signed-off-by: Cedric Kienzler <github@cedric-kienzler.de>
Signed-off-by: cedi <cedi@users.noreply.github.com>
Signed-off-by: Cedric Kienzler <cedi@users.noreply.github.com>
Co-authored-by: Patrick O'Doherty <hello@patrickod.com>
9 months ago
..
addlicense all: fix golangci-lint errors 1 year ago
build-webclient client/web: precompress assets 2 years ago
checkmetrics cmd/checkmetrics: add command for checking metrics against kb 1 year ago
cloner cmd/cloner, cmd/viewer, util/codegen: add support for aliases of cloneable types 1 year ago
connector-gen cmd/connector-gen: add helper tool for wide app connector configurations 2 years ago
containerboot cmd/{containerboot,k8s-operator},kube/kubetypes: unadvertise ingress services on shutdown (#15451) 9 months ago
derper net/netmon: publish events to event bus 9 months ago
derpprobe tsweb: split promvarz into an optional dependency 10 months ago
dist cmd/dist,release/dist: sign QNAP builds with a Google Cloud hosted key 9 months ago
get-authkey cmd,tsnet,internal/client: create internal shim to deprecated control plane API 11 months ago
gitops-pusher cmd/gitops-pusher: log error details when unable to fetch ACL ETag 11 months ago
hello cmd/hello: display native ipv4 (#15191) 10 months ago
k8s-nameserver cmd/k8s-nameserver: fix AAAA record query response (#12412) 2 years ago
k8s-operator cmd/k8s-operator: default ingress paths to '/' if not specified by user (#15706) 9 months ago
mkmanifest cmd/mkmanifest, cmd/tailscale, cmd/tailscaled: remove Windows arm32 resources from OSS 3 years ago
mkpkg go.mod: upgrade nfpm to v2 (#8786) 2 years ago
mkversion version/mkversion: open-source version generation logic 3 years ago
nardump cmd/nardump: support symlinks, add basic test 9 months ago
natc cmd/natc: cleanup unused state 9 months ago
netlogfmt all: use Go 1.22 range-over-int 2 years ago
nginx-auth tailcfg,all: add and use Node.IsTagged() 3 years ago
pgproxy all: use new LocalAPI client package location 11 months ago
printdep cmd/printdep: print correct toolchain URL 3 years ago
proxy-to-grafana cmd/proxy-to-grafana: support setting Grafana role via grants 10 months ago
sniproxy net/{netx,memnet},all: add netx.DialFunc, move memnet Network impl 9 months ago
speedtest all: update copyright and license headers 3 years ago
ssh-auth-none-demo ssh,tempfork/gliderlabs/ssh: replace github.com/tailscale/golang-x-crypto/ssh with golang.org/x/crypto/ssh 11 months ago
stunc cmd/stunc: enforce read timeout deadline (#14309) 1 year ago
stund all: unify some redundant testing.TB interface copies 9 months ago
stunstamp cmd/stunstamp: add protocol context to timeout logs (#13422) 1 year ago
sync-containers all: adjust some build tags for plan9 2 years ago
systray cmd/systray: add cmd/systray back as a small client/systray wrapper 1 year ago
tailscale net/netmon: publish events to event bus 9 months ago
tailscaled feature/taildrop: start moving Taildrop out of LocalBackend 9 months ago
testcontrol all: use Go 1.22 range-over-int 2 years ago
testwrapper cmd/testwrapper: print failed tests preventing retry (#15270) 10 months ago
tl-longchain all: use new LocalAPI client package location 11 months ago
tsconnect all: update the tsd.System constructor name (#15372) 9 months ago
tsidp cmd/tsidp: add groups claim to tsidp (#15127) 9 months ago
tsshd all: update copyright and license headers 3 years ago
tta all: use new LocalAPI client package location 11 months ago
viewer cmd/viewer,all: consistently use "read-only" instead of "readonly" 1 year ago
vnet cmd/vnet: add wsproxy mode 10 months ago
xdpderper tsweb: split promvarz into an optional dependency 10 months ago