# `ExMCP.Authorization.Issuer`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.4.0/lib/ex_mcp/authorization/issuer.ex#L1)

Exact authorization-server issuer comparison.

OAuth issuer identifiers are compared as identifiers, not as URLs to be
normalized. In particular, ExMCP does not add or remove trailing slashes,
rewrite paths, fold case, or otherwise canonicalize issuer values before
comparing them.

# `mismatch`

```elixir
@type mismatch() ::
  :missing_expected_issuer
  | :missing_authorization_server_issuer
  | {:issuer_mismatch, keyword(String.t())}
```

# `compare`

```elixir
@spec compare(String.t() | nil, String.t() | nil) :: :ok | {:error, mismatch()}
```

Compares two issuer identifiers byte-for-byte.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
