1923

都内と業界の隅っこで生活しているエンジニアのノート

IdentityServer4 でトークンエンドポイントの変更

IdentityServer4 でトークンの発行を「connect/token」ではなく「api/token」にしたかったのですが、設定では変更できないようなので Url Rewrite で対応。と合わせて Discovery のエンドポイントも新しいパスに変更です。

Endpoints

URL Rewriting Middleware の設定を追加し、api/ を connect/ にRewrite

IISUrlRewrite.xml

<rewrite>
  <rules>
    <rule name="Rewrite1" stopProcessing="true">
      <match url="^api/(.*)" />
      <action type="Rewrite" url="connect/{R:1}" appendQueryString="true"/>
    </rule>
  </rules>
</rewrite>

Startup.cs / Configure

using StreamReader iisUrlRewriteStreamReader = File.OpenText("IISUrlRewrite.xml");
var options = new RewriteOptions()
    .AddIISUrlRewrite(iisUrlRewriteStreamReader);
Discovery

Discovery のオプション設定でデフォルトのエンドポイントを非表示にして、新しいエンドポイントを追加。

Startup.cs / ConfigureServices

var builder = services.AddIdentityServer(
    options =>
    {
        options.Discovery.ShowEndpoints = false;
        options.Discovery.CustomEntries.Add("token_endpoint", "~/api/token");
        // 他にも必要なら追記
    })