An open API service indexing awesome lists of open source software.

https://github.com/optum/azure-functions-auth

TypeScript package for adding OAuth2 to Azure Functions
https://github.com/optum/azure-functions-auth

azure-functions oauth2

Last synced: about 1 month ago
JSON representation

TypeScript package for adding OAuth2 to Azure Functions

Awesome Lists containing this project

README

          

# azure-functions-auth

An easy way to wrap Azure Functions in automatic OAuth2 JWT authorization!

This library will wrap any javascript/typescript Azure Function implementation and automatically provide access to
the JwtToken that was included on the request. If the auth requirements weren't met, 401/403 responses are
automatically sent back.

Examples:
# Require a JWT token with no role requirements

```typescript
import { requireAuthorization, AuthenticatedContext } from "@optum/azure-functions-auth"

const httpTrigger: AzureFunction = requireAuthorization(async (context: AuthenticatedContext, req: HttpRequest): Promise => {
context.log("Received request from subject", context.jwtToken.sub)
}, {
jwksEndpoint: process.env.JWKS_ENDPOINT, // configurable based on your OAuth2 provider
requiredIssuer: process.env.REQUIRED_ISSUER, // configurable based on your OAuth2 provider
requiredAud: process.env.REQUIRED_AUD // the specific audiance value for your service
})

export default httpTrigger
```

# Require a JWT token with additional role requirements

```typescript
import { requireAuthorization, AuthenticatedContext } from "@optum/azure-functions-auth"

const httpTrigger: AzureFunction = requireAuthorization(async (context: AuthenticatedContext, req: HttpRequest, token: JwtToken): Promise => {
context.log("Received request from subject", context.jwtToken.sub)
}, {
jwksEndpoint: process.env.JWKS_ENDPOINT, // configurable based on your OAuth2 provider
requiredIssuer: process.env.REQUIRED_ISSUER, // configurable based on your OAuth2 provider
requiredAud: process.env.REQUIRED_AUD, // the specific audiance value for your service
requiredRole: "MY_FUNCTION_ROLE" // the role guarding access to this specific function endpoint
})

export default httpTrigger
```