Skip to content

🌟 [Major]: JWT module rewrite covering the full JWS half of JOSE#26

Draft
Marius Storhaug (MariusStorhaug) wants to merge 12 commits into
mainfrom
feat/13-implement-jwt-module
Draft

🌟 [Major]: JWT module rewrite covering the full JWS half of JOSE#26
Marius Storhaug (MariusStorhaug) wants to merge 12 commits into
mainfrom
feat/13-implement-jwt-module

Conversation

@MariusStorhaug
Copy link
Copy Markdown
Member

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented May 12, 2026

The Jwt module is rewritten end to end against the JOSE specs. The v1 surface (-PayloadJson, -Cert, -Secret, string-returning Get-JwtHeader/Get-JwtPayload) is replaced with a typed object model and a public surface that now covers every JWS algorithm in RFC 7518 §3, JWK + JWKS handling per RFC 7517, and RFC 7638 thumbprints. All cryptography uses System.Security.Cryptography from .NET — no third-party dependencies. The module now requires PowerShell 7.6.

Breaking Changes

The v1 cmdlet shapes are gone. See the README for the full migration table; the highlights:

v1 v2
New-Jwt -Header '{...}' -PayloadJson '{...}' -Secret New-Jwt -Payload @{...} -Algorithm HS256 -Key $secret
New-Jwt -Cert $cert ... $rsa = $cert.GetRSAPrivateKey(); New-Jwt -Key $rsa
Test-Jwt -Cert $cert ... Test-Jwt -Key $rsa ... (or -Key $jwk)
Get-JwtHeader / Get-JwtPayload returned strings Now return typed [JwtHeader] / [JwtPayload]
Verify-JwtSignature alias Removed — use Test-Jwt

New: Full RFC 7518 §3 JWS algorithm matrix

New-Jwt and Test-Jwt now support every JWS algorithm in the spec:

Family Algorithms
HMAC HS256, HS384, HS512
RSA (PKCS#1 v1.5) RS256, RS384, RS512
RSA-PSS PS256, PS384, PS512
ECDSA ES256 (P-256), ES384 (P-384), ES512 (P-521)
None none (rejected by Test-Jwt unless -AllowUnsigned is supplied)

The ECDSA family enforces the curve OID required by the algorithm — supplying a P-256 key for ES384 (or vice versa) is refused before any signature work happens. HMAC keys are similarly refused for asymmetric algorithms, blocking the classic algorithm-confusion attack.

New-Jwt -Payload @{ sub = 'app' } -Algorithm PS512 -Key $rsa
New-Jwt -Payload @{ sub = 'app' } -Algorithm ES512 -Key $ecP521

New: Typed JWT object model

ConvertFrom-Jwt returns a [Jwt] with strongly-typed Header and Payload, preserving EncodedHeader / EncodedPayload for byte-exact round-tripping. Registered claims (iss, sub, aud, exp, nbf, iat, jti) are first-class properties on [JwtPayload]; everything else lives in AdditionalFields (an OrderedDictionary).

$parsed = ConvertFrom-Jwt -Token $compact
$parsed.Header.alg
$parsed.Payload.sub
$parsed.Payload.AdditionalFields['groups']

New: External signing flow

New-Jwt -Unsigned produces an unsigned token whose SigningInput() can be handed to an external signer (HSM, Azure Key Vault, etc.). The base64url signature is then assigned back onto $token.Signature to complete the JWT:

$jwt = New-Jwt -Payload @{ sub = 'app' } -Algorithm RS256 -Unsigned
$jwt.SigningInput()              # 'header.payload'
$jwt.Signature = $externalSig
$jwt.ToString()

New: JWK, JWKS, and RFC 7638 thumbprints

The full JSON Web Key surface is now in the module:

Cmdlet Purpose
ConvertTo-JwtKey Convert an RSA / ECDsa / byte[] into a [JwtKey] (JWK)
ConvertFrom-JwtKey Convert a [JwtKey] back into a .NET key
ConvertTo-JwtKeySet Wrap one or more [JwtKey] into a [JwtKeySet] (JWKS)
ConvertFrom-JwtKeySet Parse a JWKS JSON document into a [JwtKeySet]
Get-JwtKeyFromSet Look up a [JwtKey] by kid
Get-JwtKeyThumbprint Compute the RFC 7638 JWK thumbprint (SHA-256 / SHA-384 / SHA-512)

Typical "fetch the issuer's JWKS, look up the kid from the token header, verify" flow:

$set = ConvertFrom-JwtKeySet -Json (Invoke-RestMethod 'https://issuer/.well-known/jwks.json' | ConvertTo-Json -Depth 100)
$key = Get-JwtKeyFromSet -KeySet $set -KeyId (Get-JwtHeader $token).kid
Test-Jwt -Token $token -Key $key

The RFC 7638 reference vector matches exactly: a thumbprint computed with Get-JwtKeyThumbprint over the spec's example RSA key produces NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs.

New: Structured validation report

Test-Jwt -Detailed returns a per-check report covering algorithm, signature, expiration, not-before, issuer, and audience — useful for auditing why a token was rejected:

Valid              : True
SignatureValidated : True
Algorithm          : RS256
Checks             : @(... 6 entries: Algorithm, Signature, Expiration, NotBefore, Issuer, Audience)

New: Base64Url helpers as public surface

ConvertTo-Base64UrlString / ConvertFrom-Base64UrlString (and the [JwtBase64Url] class) are kept on the public surface — they're standard JOSE building blocks (RFC 4648 §5) that are useful for hand-constructing tokens, debugging, and external signing flows.

Fixed: Order-preserving JSON output

JWT serialization now preserves the order of dictionary input. Passing [ordered]@{} to New-Jwt -Payload produces a JWT whose claim order matches the input — necessary for byte-exact reproduction of reference vectors and for any consumer that hashes the encoded payload.

Roadmap

The v2 release covers the JWS half of JOSE end to end (RFC 7515 / 7517 / 7518 §3 / 7519 / 7638). The following are explicitly out of scope and tracked as follow-up issues:

  • JWE — RFC 7516 + RFC 7518 §4–§5. Protect-Jwt / Unprotect-Jwt plus the full key-management and content-encryption matrix. Not in scope for v2 because the surface is large and the AES-CBC-HMAC mode requires careful constant-time MAC-then-decrypt to avoid padding-oracle bugs.
  • EdDSA — RFC 8037. Ed25519 and Ed448 over the OKP key type. Blocked on first-party Ed25519 support in System.Security.Cryptography.
  • RSA1_5 key wrap. Spec-listed but Bleichenbacher-vulnerable; will not be implemented.

Technical Details

  • src/classes/public/: Jwt, JwtHeader, JwtPayload, JwtKey, JwtKeySet, JwtBase64Url. Headers and payloads use OrderedDictionary for AdditionalFields and an explicit _keyOrder list to keep registered claims in input order during serialization.
  • Resolve-JwtKey (private): per-algorithm-family key validation. ECDSA branch enforces the required curve via OID comparison on params.Curve.Oid.Value (1.2.840.10045.3.1.7, 1.3.132.0.34, 1.3.132.0.35). HMAC branch refuses RSA/EC inputs to block algorithm-confusion attacks.
  • Test-JwtSignature (private): switch-on-prefix dispatch; PSS padding for ^PS, PKCS#1 v1.5 for ^RS, constant-time compare for HMAC.
  • Get-JwtClaim: now uses a stable [object]::new() sentinel instead of [AutomationNull] for missing-value detection, so -ErrorIfMissing actually emits errors (AutomationNull unwraps to $null on assignment, which silently broke the previous check).
  • JwtKey constructor accepts [IDictionary] (incl. [ordered]@{}) to preserve field order from JWKS JSON parsed via ConvertFrom-Json -AsHashtable.
  • Pester suite expanded from 39 to 79 tests; full matrix is green locally and the existing CI harness handles class-type visibility for the typed-API tests.

Implementation plan progress

All four implementation-plan tasks from #13 are complete:

  1. Typed object model ([Jwt], [JwtHeader], [JwtPayload]) — done
  2. Algorithm + key handling (HS/RS/PS/ES families, JWK in/out, JWKS, thumbprints) — done
  3. Validation surface (Test-Jwt with detailed reporting, claim checks, algorithm-confusion blocks) — done
  4. Documentation + tests — done

@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title Draft: JWT v2 implementation 🌟 [Major]: JWT v2 — full JOSE spec coverage with typed objects, JWK round-trip, and algorithm-confusion protection May 12, 2026
@MariusStorhaug Marius Storhaug (MariusStorhaug) added the Major Breaking changes that bump the major version label May 12, 2026
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Fail ❌
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

MARKDOWN
/github/workspace/README.md:20:113 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JwtPayload 38    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JwtPayload 39    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JwtPayload 40    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  ConvertFro 30    The cmdlet 'C
                                                 m-Base64Ur       onvertFrom-Ba
                                                 lString.ps       se64UrlString
                                                 1                ' returns an
                                                                  object of typ
                                                                  e 'System.Obj
                                                                  ect[]' but th
                                                                  is type is no
                                                                  t declared in
                                                                   the OutputTy
                                                                  pe attribute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      New-Jwt.ps 103   Line exceeds
                                                 1                the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Resolve-Jw 98    The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.RSA' bu
                                                                  t this type i
                                                                  s not declare
                                                                  d in the Outp
                                                                  utType attrib
                                                                  ute.
PSUseOutputTypeCorrectly            Information  Resolve-Jw 107   The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.HMACSHA
                                                                  256' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  Resolve-Jw 116   The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.HMACSHA
                                                                  256' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  Resolve-Jw 135   The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.ECDsa'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      Test-Jwt.p 109   Line exceeds
                                                 s1               the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Test-JwtCl 100   The cmdlet 'T
                                                 aim.ps1          est-JwtClaim'
                                                                   returns an o
                                                                  bject of type
                                                                   'System.Obje
                                                                  ct[]' but thi
                                                                  s type is not
                                                                   declared in
                                                                  the OutputTyp
                                                                  e attribute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidUsingConvertToSecureStringWi Error        Jwt.Tests. 71    File 'Jwt.Tes
thPlainText                                      ps1              ts.ps1' uses
                                                                  ConvertTo-Sec
                                                                  ureString wit
                                                                  h plaintext.
                                                                  This will exp
                                                                  ose secure in
                                                                  formation. En
                                                                  crypted stand
                                                                  ard strings s
                                                                  hould be used
                                                                   instead.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  ConvertFro 49    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.RSA
                                                                  ' but this ty
                                                                  pe is not dec
                                                                  lared in the
                                                                  OutputType at
                                                                  tribute.
PSUseOutputTypeCorrectly            Information  ConvertFro 71    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.ECD
                                                                  sa' but this
                                                                  type is not d
                                                                  eclared in th
                                                                  e OutputType
                                                                  attribute.
PSUseOutputTypeCorrectly            Information  ConvertFro 75    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.HMA
                                                                  CSHA256' but
                                                                  this type is
                                                                  not declared
                                                                  in the Output
                                                                  Type attribut
                                                                  e.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Get-JwtCla 87    The cmdlet 'G
                                                 im.ps1           et-JwtClaim'
                                                                  returns an ob
                                                                  ject of type
                                                                  'System.Colle
                                                                  ctions.Specia
                                                                  lized.Ordered
                                                                  Dictionary' b
                                                                  ut this type
                                                                  is not declar
                                                                  ed in the Out
                                                                  putType attri
                                                                  bute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
TypeNotFound                        Information  Jwt.ps1    2     Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    3     Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    10    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    10    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    13    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    14    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    18    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    18    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    21    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    22    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    27    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    28    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.

@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 🌟 [Major]: JWT v2 — full JOSE spec coverage with typed objects, JWK round-trip, and algorithm-confusion protection 🌟 [Major]: JWT module rewrite covering the full JWS half of JOSE May 12, 2026
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Fail ❌
NATURAL_LANGUAGE Fail ❌
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

MARKDOWN
/github/workspace/README.md:20:114 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:22:11 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:23:62 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:23:106 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:24:118 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:32:116 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
/github/workspace/README.md:44:63 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
NATURAL_LANGUAGE

/github/workspace/README.md
  163:44  ✓ error  Incorrect term: “end to end”, use “end-to-end” instead  terminology

✖ 1 problem (1 error, 0 warnings, 0 infos)
✓ 1 fixable problem.
Try to run: $ textlint --fix [file]
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
TypeNotFound                        Information  JwtKeySet. 2     Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.
TypeNotFound                        Information  JwtKeySet. 7     Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.
TypeNotFound                        Information  JwtKeySet. 15    Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.
TypeNotFound                        Information  JwtKeySet. 17    Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.
TypeNotFound                        Information  JwtKeySet. 19    Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.
TypeNotFound                        Information  JwtKeySet. 33    Ignoring 'Typ
                                                 ps1              eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtKey'
                                                                  . Check if th
                                                                  e specified t
                                                                  ype is correc
                                                                  t. This can a
                                                                  lso be due th
                                                                  e type not be
                                                                  ing known at
                                                                  parse time du
                                                                  e to types im
                                                                  ported by 'us
                                                                  ing' statemen
                                                                  ts.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JwtPayload 38    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JwtPayload 39    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JwtPayload 40    Line exceeds
                                                 .ps1             the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  New-JwtHma 22    The cmdlet 'N
                                                 c.ps1            ew-JwtHmac' r
                                                                  eturns an obj
                                                                  ect of type '
                                                                  System.Securi
                                                                  ty.Cryptograp
                                                                  hy.HMACSHA256
                                                                  ' but this ty
                                                                  pe is not dec
                                                                  lared in the
                                                                  OutputType at
                                                                  tribute.
PSUseOutputTypeCorrectly            Information  New-JwtHma 23    The cmdlet 'N
                                                 c.ps1            ew-JwtHmac' r
                                                                  eturns an obj
                                                                  ect of type '
                                                                  System.Securi
                                                                  ty.Cryptograp
                                                                  hy.HMACSHA384
                                                                  ' but this ty
                                                                  pe is not dec
                                                                  lared in the
                                                                  OutputType at
                                                                  tribute.
PSUseOutputTypeCorrectly            Information  New-JwtHma 24    The cmdlet 'N
                                                 c.ps1            ew-JwtHmac' r
                                                                  eturns an obj
                                                                  ect of type '
                                                                  System.Securi
                                                                  ty.Cryptograp
                                                                  hy.HMACSHA512
                                                                  ' but this ty
                                                                  pe is not dec
                                                                  lared in the
                                                                  OutputType at
                                                                  tribute.
PSUseShouldProcessForStateChangingF Warning      New-JwtHma 1     Function 'New
unctions                                         c.ps1            -JwtHmac' has
                                                                   verb that co
                                                                  uld change sy
                                                                  stem state. T
                                                                  herefore, the
                                                                   function has
                                                                   to support '
                                                                  ShouldProcess
                                                                  '.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Resolve-Jw 135   The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.RSA' bu
                                                                  t this type i
                                                                  s not declare
                                                                  d in the Outp
                                                                  utType attrib
                                                                  ute.
PSUseOutputTypeCorrectly            Information  Resolve-Jw 191   The cmdlet 'R
                                                 tKey.ps1         esolve-JwtKey
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Sec
                                                                  urity.Cryptog
                                                                  raphy.ECDsa'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Get-JwtCla 88    The cmdlet 'G
                                                 im.ps1           et-JwtClaim'
                                                                  returns an ob
                                                                  ject of type
                                                                  'System.Colle
                                                                  ctions.Specia
                                                                  lized.Ordered
                                                                  Dictionary' b
                                                                  ut this type
                                                                  is not declar
                                                                  ed in the Out
                                                                  putType attri
                                                                  bute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  Test-JwtCl 100   The cmdlet 'T
                                                 aim.ps1          est-JwtClaim'
                                                                   returns an o
                                                                  bject of type
                                                                   'System.Obje
                                                                  ct[]' but thi
                                                                  s type is not
                                                                   declared in
                                                                  the OutputTyp
                                                                  e attribute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  ConvertFro 30    The cmdlet 'C
                                                 m-Base64Ur       onvertFrom-Ba
                                                 lString.ps       se64UrlString
                                                 1                ' returns an
                                                                  object of typ
                                                                  e 'System.Obj
                                                                  ect[]' but th
                                                                  is type is no
                                                                  t declared in
                                                                   the OutputTy
                                                                  pe attribute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSUseOutputTypeCorrectly            Information  ConvertFro 49    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.RSA
                                                                  ' but this ty
                                                                  pe is not dec
                                                                  lared in the
                                                                  OutputType at
                                                                  tribute.
PSUseOutputTypeCorrectly            Information  ConvertFro 71    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.ECD
                                                                  sa' but this
                                                                  type is not d
                                                                  eclared in th
                                                                  e OutputType
                                                                  attribute.
PSUseOutputTypeCorrectly            Information  ConvertFro 75    The cmdlet 'C
                                                 m-JwtKey.p       onvertFrom-Jw
                                                 s1               tKey' returns
                                                                   an object of
                                                                   type 'System
                                                                  .Security.Cry
                                                                  ptography.HMA
                                                                  CSHA256' but
                                                                  this type is
                                                                  not declared
                                                                  in the Output
                                                                  Type attribut
                                                                  e.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      New-Jwt.ps 114   Line exceeds
                                                 1                the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      Test-Jwt.p 109   Line exceeds
                                                 s1               the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      Test-Jwt.p 121   Line exceeds
                                                 s1               the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
TypeNotFound                        Information  Jwt.ps1    2     Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    3     Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    10    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    10    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    13    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    14    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    18    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    18    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.
TypeNotFound                        Information  Jwt.ps1    21    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    22    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtBase
                                                                  64Url'. Check
                                                                   if the speci
                                                                  fied type is
                                                                  correct. This
                                                                   can also be
                                                                  due the type
                                                                  not being kno
                                                                  wn at parse t
                                                                  ime due to ty
                                                                  pes imported
                                                                  by 'using' st
                                                                  atements.
TypeNotFound                        Information  Jwt.ps1    27    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtHead
                                                                  er'. Check if
                                                                   the specifie
                                                                  d type is cor
                                                                  rect. This ca
                                                                  n also be due
                                                                   the type not
                                                                   being known
                                                                  at parse time
                                                                   due to types
                                                                   imported by
                                                                  'using' state
                                                                  ments.
TypeNotFound                        Information  Jwt.ps1    28    Ignoring 'Typ
                                                                  eNotFound' pa
                                                                  rse error on
                                                                  type 'JwtPayl
                                                                  oad'. Check i
                                                                  f the specifi
                                                                  ed type is co
                                                                  rrect. This c
                                                                  an also be du
                                                                  e the type no
                                                                  t being known
                                                                   at parse tim
                                                                  e due to type
                                                                  s imported by
                                                                   'using' stat
                                                                  ements.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      Jwt.Tests. 484   Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidUsingConvertToSecureStringWi Error        Jwt.Tests. 71    File 'Jwt.Tes
thPlainText                                      ps1              ts.ps1' uses
                                                                  ConvertTo-Sec
                                                                  ureString wit
                                                                  h plaintext.
                                                                  This will exp
                                                                  ose secure in
                                                                  formation. En
                                                                  crypted stand
                                                                  ard strings s
                                                                  hould be used
                                                                   instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Major Breaking changes that bump the major version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement JWT creation, parsing, validation, inspection, and JWK functions

1 participant