Skip to content

Commit f80f4d1

Browse files
committed
jwt auth
Signed-off-by: Phil Prasek <[email protected]>
1 parent e2048e2 commit f80f4d1

File tree

6 files changed

+68
-24
lines changed

6 files changed

+68
-24
lines changed

.scripts/graph-api-env-export.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@ else
99
fi
1010

1111
export APOLLO_KEY=$APOLLO_KEY
12-
export APOLLO_GRAPH_REF=$APOLLO_GRAPH_REF
12+
export APOLLO_GRAPH_REF=$APOLLO_GRAPH_REF
13+
14+
#echo "key:$APOLLO_KEY"
15+
#echo "ref:$APOLLO_GRAPH_REF"

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ run-router:
5353
./router --version && \
5454
./router --dev \
5555
-c ./supergraph/router.yaml \
56-
--log info
56+
--log "info,apollo_router::uplink=debug"
5757

5858
.PHONY: query
5959
query:

subgraphs/products/products.graphql

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
extend schema
2-
@link(url: "https://specs.apollo.dev/federation/v2.1",
2+
@link(url: "https://specs.apollo.dev/federation/v2.3",
33
import: ["@key", "@shareable", "@tag", "@inaccessible", "@composeDirective"])
44
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", { name: "@anotherDirective", as: "@hello" }])
55
@composeDirective(name: "@myDirective")
@@ -30,7 +30,13 @@ interface SkuItf {
3030
sku: String
3131
}
3232

33-
type Product implements ProductItf & SkuItf @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){
33+
interface Prod @key(fields: "id"){
34+
id: ID!
35+
sku: String
36+
name: String
37+
}
38+
39+
type Product implements Prod & ProductItf & SkuItf @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){
3440
id: ID! @tag(name: "hi-from-products")
3541
sku: String
3642
name: String @hello

supergraph/router.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ telemetry:
2020
protocol: grpc
2121
batch_processor:
2222
max_export_timeout: 42s
23+
authentication:
24+
jwt:
25+
jwks: # This key is required.
26+
- url: https://dev-zzp5enui.us.auth0.com/.well-known/jwks.json
27+
issuer: auth0
28+
29+
# These keys are optional. Default values are shown.
30+
header_name: Authorization
31+
header_value_prefix: Bearer
2332

2433
# --------------------
2534
# note: `router --dev` has these default settings and enables the --hot-reload flag

supergraph/schema/docker.graphql

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
schema
22
@link(url: "https://specs.apollo.dev/link/v1.0")
3-
@link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
4-
@link(url: "https://specs.apollo.dev/tag/v0.2")
3+
@link(url: "https://specs.apollo.dev/join/v0.3", for: EXECUTION)
4+
@link(url: "https://specs.apollo.dev/tag/v0.3")
55
@link(url: "https://specs.apollo.dev/inaccessible/v0.2", for: SECURITY)
66
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", {name: "@anotherDirective", as: "@hello"}])
77
{
@@ -12,19 +12,23 @@ directive @hello on FIELD_DEFINITION
1212

1313
directive @inaccessible on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
1414

15-
directive @join__field(graph: join__Graph!, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
15+
directive @join__enumValue(graph: join__Graph!) repeatable on ENUM_VALUE
16+
17+
directive @join__field(graph: join__Graph, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
1618

1719
directive @join__graph(name: String!, url: String!) on ENUM_VALUE
1820

1921
directive @join__implements(graph: join__Graph!, interface: String!) repeatable on OBJECT | INTERFACE
2022

21-
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
23+
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true, isInterfaceObject: Boolean! = false) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
24+
25+
directive @join__unionMember(graph: join__Graph!, member: String!) repeatable on UNION
2226

2327
directive @link(url: String, as: String, for: link__Purpose, import: [link__Import]) repeatable on SCHEMA
2428

2529
directive @myDirective(a: String!) on FIELD_DEFINITION
2630

27-
directive @tag(name: String!) repeatable on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
31+
directive @tag(name: String!) repeatable on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA
2832

2933
type DeliveryEstimates
3034
@join__type(graph: INVENTORY)
@@ -64,8 +68,17 @@ type Panda
6468
favoriteFood: String @tag(name: "nom-nom-nom")
6569
}
6670

67-
type Product implements ProductItf & SkuItf
71+
interface Prod
72+
@join__type(graph: PRODUCTS, key: "id")
73+
{
74+
id: ID!
75+
sku: String
76+
name: String
77+
}
78+
79+
type Product implements ProductItf & Prod & SkuItf
6880
@join__implements(graph: INVENTORY, interface: "ProductItf")
81+
@join__implements(graph: PRODUCTS, interface: "Prod")
6982
@join__implements(graph: PRODUCTS, interface: "ProductItf")
7083
@join__implements(graph: PRODUCTS, interface: "SkuItf")
7184
@join__implements(graph: REVIEWS, interface: "ProductItf")
@@ -151,9 +164,9 @@ enum ShippingClass
151164
@join__type(graph: INVENTORY)
152165
@join__type(graph: PRODUCTS)
153166
{
154-
STANDARD
155-
EXPRESS
156-
OVERNIGHT
167+
STANDARD @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
168+
EXPRESS @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
169+
OVERNIGHT @join__enumValue(graph: INVENTORY)
157170
}
158171

159172
interface SkuItf
@@ -169,4 +182,4 @@ type User
169182
email: ID! @tag(name: "test-from-users")
170183
totalProductsCreated: Int
171184
name: String @join__field(graph: USERS)
172-
}
185+
}

supergraph/schema/local.graphql

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
schema
22
@link(url: "https://specs.apollo.dev/link/v1.0")
3-
@link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
4-
@link(url: "https://specs.apollo.dev/tag/v0.2")
3+
@link(url: "https://specs.apollo.dev/join/v0.3", for: EXECUTION)
4+
@link(url: "https://specs.apollo.dev/tag/v0.3")
55
@link(url: "https://specs.apollo.dev/inaccessible/v0.2", for: SECURITY)
66
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", {name: "@anotherDirective", as: "@hello"}])
77
{
@@ -12,19 +12,23 @@ directive @hello on FIELD_DEFINITION
1212

1313
directive @inaccessible on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
1414

15-
directive @join__field(graph: join__Graph!, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
15+
directive @join__enumValue(graph: join__Graph!) repeatable on ENUM_VALUE
16+
17+
directive @join__field(graph: join__Graph, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
1618

1719
directive @join__graph(name: String!, url: String!) on ENUM_VALUE
1820

1921
directive @join__implements(graph: join__Graph!, interface: String!) repeatable on OBJECT | INTERFACE
2022

21-
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
23+
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true, isInterfaceObject: Boolean! = false) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
24+
25+
directive @join__unionMember(graph: join__Graph!, member: String!) repeatable on UNION
2226

2327
directive @link(url: String, as: String, for: link__Purpose, import: [link__Import]) repeatable on SCHEMA
2428

2529
directive @myDirective(a: String!) on FIELD_DEFINITION
2630

27-
directive @tag(name: String!) repeatable on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
31+
directive @tag(name: String!) repeatable on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA
2832

2933
type DeliveryEstimates
3034
@join__type(graph: INVENTORY)
@@ -64,8 +68,17 @@ type Panda
6468
favoriteFood: String @tag(name: "nom-nom-nom")
6569
}
6670

67-
type Product implements ProductItf & SkuItf
71+
interface Prod
72+
@join__type(graph: PRODUCTS, key: "id")
73+
{
74+
id: ID!
75+
sku: String
76+
name: String
77+
}
78+
79+
type Product implements ProductItf & Prod & SkuItf
6880
@join__implements(graph: INVENTORY, interface: "ProductItf")
81+
@join__implements(graph: PRODUCTS, interface: "Prod")
6982
@join__implements(graph: PRODUCTS, interface: "ProductItf")
7083
@join__implements(graph: PRODUCTS, interface: "SkuItf")
7184
@join__implements(graph: REVIEWS, interface: "ProductItf")
@@ -151,9 +164,9 @@ enum ShippingClass
151164
@join__type(graph: INVENTORY)
152165
@join__type(graph: PRODUCTS)
153166
{
154-
STANDARD
155-
EXPRESS
156-
OVERNIGHT
167+
STANDARD @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
168+
EXPRESS @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
169+
OVERNIGHT @join__enumValue(graph: INVENTORY)
157170
}
158171

159172
interface SkuItf
@@ -169,4 +182,4 @@ type User
169182
email: ID! @tag(name: "test-from-users")
170183
totalProductsCreated: Int
171184
name: String @join__field(graph: USERS)
172-
}
185+
}

0 commit comments

Comments
 (0)