Skip to content

Commit

Permalink
jwt auth
Browse files Browse the repository at this point in the history
Signed-off-by: Phil Prasek <prasek@gmail.com>
  • Loading branch information
prasek committed Mar 15, 2023
1 parent e2048e2 commit f80f4d1
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 24 deletions.
5 changes: 4 additions & 1 deletion .scripts/graph-api-env-export.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ else
fi

export APOLLO_KEY=$APOLLO_KEY
export APOLLO_GRAPH_REF=$APOLLO_GRAPH_REF
export APOLLO_GRAPH_REF=$APOLLO_GRAPH_REF

#echo "key:$APOLLO_KEY"
#echo "ref:$APOLLO_GRAPH_REF"
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ run-router:
./router --version && \
./router --dev \
-c ./supergraph/router.yaml \
--log info
--log "info,apollo_router::uplink=debug"

.PHONY: query
query:
Expand Down
10 changes: 8 additions & 2 deletions subgraphs/products/products.graphql
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.1",
@link(url: "https://specs.apollo.dev/federation/v2.3",
import: ["@key", "@shareable", "@tag", "@inaccessible", "@composeDirective"])
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", { name: "@anotherDirective", as: "@hello" }])
@composeDirective(name: "@myDirective")
Expand Down Expand Up @@ -30,7 +30,13 @@ interface SkuItf {
sku: String
}

type Product implements ProductItf & SkuItf @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){
interface Prod @key(fields: "id"){
id: ID!
sku: String
name: String
}

type Product implements Prod & ProductItf & SkuItf @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){
id: ID! @tag(name: "hi-from-products")
sku: String
name: String @hello
Expand Down
9 changes: 9 additions & 0 deletions supergraph/router.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ telemetry:
protocol: grpc
batch_processor:
max_export_timeout: 42s
authentication:
jwt:
jwks: # This key is required.
- url: https://dev-zzp5enui.us.auth0.com/.well-known/jwks.json
issuer: auth0

# These keys are optional. Default values are shown.
header_name: Authorization
header_value_prefix: Bearer

# --------------------
# note: `router --dev` has these default settings and enables the --hot-reload flag
Expand Down
33 changes: 23 additions & 10 deletions supergraph/schema/docker.graphql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema
@link(url: "https://specs.apollo.dev/link/v1.0")
@link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
@link(url: "https://specs.apollo.dev/tag/v0.2")
@link(url: "https://specs.apollo.dev/join/v0.3", for: EXECUTION)
@link(url: "https://specs.apollo.dev/tag/v0.3")
@link(url: "https://specs.apollo.dev/inaccessible/v0.2", for: SECURITY)
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", {name: "@anotherDirective", as: "@hello"}])
{
Expand All @@ -12,19 +12,23 @@ directive @hello on FIELD_DEFINITION

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

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
directive @join__enumValue(graph: join__Graph!) repeatable on ENUM_VALUE

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

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

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

directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
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

directive @join__unionMember(graph: join__Graph!, member: String!) repeatable on UNION

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

directive @myDirective(a: String!) on FIELD_DEFINITION

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

type DeliveryEstimates
@join__type(graph: INVENTORY)
Expand Down Expand Up @@ -64,8 +68,17 @@ type Panda
favoriteFood: String @tag(name: "nom-nom-nom")
}

type Product implements ProductItf & SkuItf
interface Prod
@join__type(graph: PRODUCTS, key: "id")
{
id: ID!
sku: String
name: String
}

type Product implements ProductItf & Prod & SkuItf
@join__implements(graph: INVENTORY, interface: "ProductItf")
@join__implements(graph: PRODUCTS, interface: "Prod")
@join__implements(graph: PRODUCTS, interface: "ProductItf")
@join__implements(graph: PRODUCTS, interface: "SkuItf")
@join__implements(graph: REVIEWS, interface: "ProductItf")
Expand Down Expand Up @@ -151,9 +164,9 @@ enum ShippingClass
@join__type(graph: INVENTORY)
@join__type(graph: PRODUCTS)
{
STANDARD
EXPRESS
OVERNIGHT
STANDARD @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
EXPRESS @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
OVERNIGHT @join__enumValue(graph: INVENTORY)
}

interface SkuItf
Expand All @@ -169,4 +182,4 @@ type User
email: ID! @tag(name: "test-from-users")
totalProductsCreated: Int
name: String @join__field(graph: USERS)
}
}
33 changes: 23 additions & 10 deletions supergraph/schema/local.graphql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema
@link(url: "https://specs.apollo.dev/link/v1.0")
@link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
@link(url: "https://specs.apollo.dev/tag/v0.2")
@link(url: "https://specs.apollo.dev/join/v0.3", for: EXECUTION)
@link(url: "https://specs.apollo.dev/tag/v0.3")
@link(url: "https://specs.apollo.dev/inaccessible/v0.2", for: SECURITY)
@link(url: "https://myspecs.dev/myDirective/v1.0", import: ["@myDirective", {name: "@anotherDirective", as: "@hello"}])
{
Expand All @@ -12,19 +12,23 @@ directive @hello on FIELD_DEFINITION

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

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
directive @join__enumValue(graph: join__Graph!) repeatable on ENUM_VALUE

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

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

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

directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
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

directive @join__unionMember(graph: join__Graph!, member: String!) repeatable on UNION

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

directive @myDirective(a: String!) on FIELD_DEFINITION

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

type DeliveryEstimates
@join__type(graph: INVENTORY)
Expand Down Expand Up @@ -64,8 +68,17 @@ type Panda
favoriteFood: String @tag(name: "nom-nom-nom")
}

type Product implements ProductItf & SkuItf
interface Prod
@join__type(graph: PRODUCTS, key: "id")
{
id: ID!
sku: String
name: String
}

type Product implements ProductItf & Prod & SkuItf
@join__implements(graph: INVENTORY, interface: "ProductItf")
@join__implements(graph: PRODUCTS, interface: "Prod")
@join__implements(graph: PRODUCTS, interface: "ProductItf")
@join__implements(graph: PRODUCTS, interface: "SkuItf")
@join__implements(graph: REVIEWS, interface: "ProductItf")
Expand Down Expand Up @@ -151,9 +164,9 @@ enum ShippingClass
@join__type(graph: INVENTORY)
@join__type(graph: PRODUCTS)
{
STANDARD
EXPRESS
OVERNIGHT
STANDARD @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
EXPRESS @join__enumValue(graph: INVENTORY) @join__enumValue(graph: PRODUCTS)
OVERNIGHT @join__enumValue(graph: INVENTORY)
}

interface SkuItf
Expand All @@ -169,4 +182,4 @@ type User
email: ID! @tag(name: "test-from-users")
totalProductsCreated: Int
name: String @join__field(graph: USERS)
}
}

0 comments on commit f80f4d1

Please sign in to comment.