Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 19 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,46 @@
# Jwt

`Jwt` is a PowerShell module for creating and verifying JSON Web Tokens. This repository maintains the current `Jwt` module command surface under PSModule maintenance so existing users can continue to install and use the package from PowerShell Gallery.
Jwt is a PowerShell module for creating, decoding, and verifying JSON Web Tokens (JWTs). It supports HS256
shared-secret tokens, RS256 certificate-signed tokens, and the `none` algorithm.
Comment thread
MariusStorhaug marked this conversation as resolved.
Comment on lines +3 to +4

> [!WARNING]
> The `none` algorithm produces an unsigned token whose integrity cannot be verified. Avoid it for
> authentication or authorization; use HS256 or RS256 for any token that must be trusted.

## Installation

Install the module from the PowerShell Gallery:

```powershell
Install-PSResource -Name Jwt
Import-Module -Name Jwt
```

## Commands

The maintained module exports the same JWT commands and alias used by the current package:

```powershell
ConvertFrom-Base64UrlString
ConvertTo-Base64UrlString
Get-JwtHeader
Get-JwtPayload
New-Jwt
Test-Jwt
Verify-JwtSignature
```

## Usage

Create and validate an HMAC-signed JWT:
### Example: Create and validate an HMAC-signed token

```powershell
$header = '{"alg":"HS256","typ":"JWT"}'
$payload = '{"sub":"1234567890","name":"John Doe","admin":true,"iat":1516239022}'
$secret = 'a-string-secret-at-least-256-bits-long'

$jwt = New-Jwt -Header $header -PayloadJson $payload -Secret $secret
Test-Jwt -jwt $jwt -Secret $secret
$jwt = New-Jwt -Header '{"alg":"HS256","typ":"JWT"}' -PayloadJson $payload -Secret $secret
$jwt | Test-Jwt -Secret $secret
```

Read the header and payload from an existing token:
### Example: Decode the payload of an existing token

```powershell
Get-JwtHeader -jwt $jwt
Get-JwtPayload -jwt $jwt
$jwt | Get-JwtPayload
```

For more information about each command, use PowerShell help:
## Documentation

Documentation is published at [psmodule.io/Jwt](https://psmodule.io/Jwt/).

Use PowerShell help and command discovery for module details:

```powershell
Get-Command -Module Jwt
Get-Help New-Jwt -Full
Get-Help -Name New-Jwt -Examples
```

## Contributing

Coder or not, you can contribute to the project! We welcome all contributions.

### For Users

If you don't code, you still sit on valuable information that can make this project even better. If you experience that the
product does unexpected things, throw errors or is missing functionality, you can help by submitting bugs and feature requests.
Please see the issues tab on this project and submit a new issue that matches your needs.

### For Developers

If you do code, we'd love to have your contributions. Please read the [Contribution guidelines](CONTRIBUTING.md) for more information.
You can either help by picking up an existing issue or submit a new one if you have an idea for a new feature or improvement.

## Acknowledgements

Here is a list of people and projects that helped this project in some way.
Loading