Claude CodeのDuendeプラグインでIdentityServerの実装指針を使う
Duende公式のduende-skillsは、IdentityServerやBFFの実装指針を26個のスキルと2つのエージェントでClaude Codeに足します。導入、スキルの選び方、v7からv8への移行での使いどころをまとめます。
duende-skillsは、.NETの認証基盤Duende IdentityServerを作る人向けに、Duende Softwareが配っているClaude Codeプラグインです。OAuth 2.0とOpenID Connectの基礎、IdentityServerの設定、トークンの保護、BFF、ASP.NET Coreの認証・認可までを、スキルとして同梱しています。
認証まわりは、モデルの一般知識だけで書くと「それらしいが古い」コードになりやすい領域です。このプラグインは、その差を埋めるための指針集という位置づけです。導入から、どのスキルがいつ効くか、v7からv8への移行での使い方、導入前に知っておきたい注意点までを順に扱います。
duende-skillsに入っているもの
プラグインの中身は、スキル26個とエージェント2つです。マーケットプレイスの掲載ページでは、提供元はDuende Software、インストール数は470と表示されています。
duende-skillsの構成
スキル
26
skills/ 配下に1スキル1フォルダ
エージェント
2
identity-server-specialist と oauth-oidc-specialist
評価プロンプト
277
提供元による評価(後述)
スキルはREADMEの「Identity & OAuth」表にまとまっています。名前の接頭辞で担当が分かれます。
| 接頭辞 | 担当 | 代表的なスキル |
|---|---|---|
identityserver-* | 担当IdentityServer本体の設定・運用 | 代表的なスキルidentityserver-configuration identityserver-key-management identityserver-deployment |
duende-* / token-management | 担当Duendeの周辺製品 | 代表的なスキルduende-bff token-management |
aspnetcore-* / claims-* | 担当ASP.NET Coreの認証・認可 | 代表的なスキルaspnetcore-authentication aspnetcore-authorization claims-authorization |
identity-* / oauth-* | 担当横断的な話題 | 代表的なスキルidentity-security-hardening identity-testing-patterns oauth-oidc-protocols |
エージェントは2つです。identity-server-specialist はクライアント定義、トークンの発行、ストア、署名鍵、デプロイを扱い、認証失敗やredirect URI不一致の切り分けも守備範囲に挙げています。oauth-oidc-specialist はRFC、フローの選択、プロトコルのデバッグ、FAPIを担当します。
READMEの注記によると、npx skills で入れるとスキルだけが入り、エージェントはプラグイン経由か手動コピーで入れる形です。
Claude Codeに導入する
Claude Code上では、マーケットプレイスを登録してからプラグインを入れます。READMEに書かれた手順は次の2行です。
/plugin marketplace add DuendeSoftware/duende-skills
/plugin install duende-skillsClaude Codeのドキュメントによると、セッション内の /plugin install はその場でインストールせず、プラグインの詳細画面を開きます。内容を確認し、スコープを選んでから入れる流れです。更新は /plugin marketplace update で行います。
シェルから入れたいときは、プラグイン名とマーケットプレイス名を @ でつなぎます。READMEではCopilot CLIの例として duende-skills@duende-skills と書かれています。Claude Codeでも同じ形式で指定できます。
claude plugin install duende-skills@duende-skillsチームで同じ指針を使いたいなら、プラグインの配り方に落とし穴があります。URLでマーケットプレイスを配る場合の注意はClaude CodeのプラグインマーケットプレイスをURLで配る落とし穴にまとめています。
一緒に入れると良いとされるもの
READMEは、一般的な.NET開発の指針をまとめた別リポジトリ dotnet-skills も勧めています。duende-skillsは認証・認可に絞っており、C#の書き方、EF Core、DI、Playwrightテストなどは対象外と明記されているためです。
/plugin marketplace add Aaronontheweb/dotnet-skills
/plugin install dotnet-skillsどのスキルがいつ効くのか
スキルはスラッシュコマンドとして打つ前提ではなく、Claudeが作業内容に合わせて読み込む知識として作られています。たとえば identityserver-token-security のSKILL.mdは、冒頭に次のようなfrontmatterを持ちます。
---
name: identityserver-token-security
description: Advanced token security features in Duende IdentityServer including DPoP, mTLS certificate binding, Pushed Authorization Requests (PAR), JWT Secured Authorization Requests (JAR), and FAPI 2.0 compliance configuration.
invocable: false
---Claude Codeのドキュメントでは、description が「Claudeがいつそのスキルを使うかを決める材料」と説明されています。プラグイン同梱のスキルは /plugin-name:skill-name の名前空間で呼び出せます。つまり「DPoPで保護したいがPARも要るか」といった質問を投げると、説明文に合うスキルが読み込まれる設計です。
なお、このfrontmatterの invocable: false というキー名は、Claude Codeのドキュメントにあるfrontmatter表には載っていません。表にあるのは user-invocable と disable-model-invocation です。キーを足しても何が起きるかは、手元のバージョンで / のメニューに出るかを見て確かめるのが確実です。
用途別に見る、スキルの当たりどころ
| やりたいこと | 効きそうなスキル | 中身の例 |
|---|---|---|
| 新規にIdentityServerを立てる | 効きそうなスキルidentityserver-hosting-setup identityserver-configuration | 中身の例DI登録、ミドルウェア順、クライアント種別とgrant type |
| SPAのトークン漏えいを避ける | 効きそうなスキルduende-bff | 中身の例セッション管理、APIプロキシ、トークン管理 |
| トークンを送信元に縛る | 効きそうなスキルidentityserver-token-security | 中身の例DPoP、mTLS、PAR、JAR、FAPI 2.0 |
| 本番へ出す | 効きそうなスキルidentityserver-deployment identityserver-key-management | 中身の例リバースプロキシ、データ保護、署名鍵のローテーション |
| 旧版から上げる | 効きそうなスキルidentityserver-upgrade-v7-to-v8 identityserver4-migration | 中身の例破壊的変更の置換表 |
実例: v7からv8への移行で使う
指針集の価値が最も分かりやすいのは移行です。identityserver-upgrade-v7-to-v8 は、v7.4からv8.0への移行に絞ったスキルで、18段階の手順を持ちます。
最初の原則は、v8が.NET 10を要求するので対象フレームワークを先に更新すること、そして破壊的変更はすべてコンパイルエラーとして出ることです。挙動が黙って変わることはない、という前提で、機械的な置換で進められると書かれています。
スキルが示す移行の入口
- 1
対象フレームワークを.NET 10にする
何より先に行います。以降のコンパイルエラーはここを更新してから読みます。
- 2
NuGetパッケージを更新し、EFマイグレーションを流す
SAMLを使わなくても、スキーマを合わせないと実行時に例外になります。
- 3
非推奨のAPIを置き換える
ICache<T>はHybridCacheへ、IClockはTimeProviderへ置き換えます。 - 4
非同期インターフェースにCancellationTokenを足す
CancellationToken.Noneを各所に渡さず、メソッド引数から伝播させます。
IClock から TimeProvider への置換は、スキルがBefore/Afterで示す典型です。プロパティ UtcNow がメソッド GetUtcNow() に変わる点まで書かれています。
// v7
public DateTime Now => _clock.UtcNow.UtcDateTime;
// v8
public DateTime Now => _timeProvider.GetUtcNow().UtcDateTime;移行の落とし穴が先に分かる
スキル末尾の「Common Pitfalls」は、ビルドが通ってから出る問題を集めています。公式ドキュメントを順に読むと見落としやすい項目です。
- HybridCacheは
[FromKeyedServices("ConfigurationStoreCache")]で注入する。素のHybridCacheを注入すると別のインスタンスになる - v8形式のライセンスキーは、v7以前やBFFのランタイムで
IDX10503の署名検証エラーになる - Server-Side Sessions、自動鍵管理、SAMLは、ライセンスはあるのに権限が足りないと起動時に例外になる。下位環境にも本番のライセンスキーを入れて確かめる
最後の項目は、v8が未ライセンスの機能を黙って無効にしなくなった、という変更です。ステージング環境で検証を飛ばすと、本番で初めて落ちます。
BFFと署名鍵のスキルが先回りで挙げる失敗
移行以外でも、スキルの末尾には「Common Pitfalls」が置かれています。ビルドも起動も通るのに、運用で壊れる型が集めてあります。
duende-bff: SPAのトークンをブラウザに出さない
duende-bff の原則は、OAuthトークンをサーバー側にだけ置き、ブラウザにはHTTP-only・Secure・SameSiteのCookieだけを見せることです。すべてのBFF APIエンドポイントで X-CSRF: 1 ヘッダーを必須にする点も、原則として挙げられています。落とし穴の例は次のとおりです。
| 症状の入口 | スキルが挙げる原因 |
|---|---|
| ユーザーがログイン直後に認証切れになる | スキルが挙げる原因SameSite=Strict のまま、別サイトのIDPからリダイレクトで戻っている。IDPが別サイトなら Lax を使う |
| アクセストークンが切れると401になる | スキルが挙げる原因offline_access スコープを省き、リフレッシュトークンが取れていない |
| トークン取得が黙って空を返す | スキルが挙げる原因OIDCの SaveTokens = true が抜けている |
| 負荷分散の環境でログインが繰り返し外れる | スキルが挙げる原因Data Protectionが複数インスタンス向けに設定されておらず、Cookieの復号に失敗している |
| 本番の再起動でセッションが消える | スキルが挙げる原因AddServerSideSessions() をEFなしで使っている。本番は AddEntityFrameworkServerSideSessions() を使う |
/bff/login と /bff/logout を fetch() で呼ぶ失敗も挙がっています。この2つはOIDCのリダイレクトを起こすので、window.location.href によるブラウザ遷移で呼ぶ必要があります。ミドルウェアは UseRouting() のあと、UseAuthorization() の前に UseBff() を置く順序で、ずれてもエラーは出ずにアンチフォージェリが効かなくなる、という注意書きまでついています。
identityserver-key-management: 鍵の入れ替えは段階的に
署名鍵のスキルは、鍵を一気に切り替えると検証失敗が起きるため、移行期間を置く段階的な入れ替えか、自動の鍵管理を使うよう指針を示します。主な落とし穴は次のとおりです。
keysディレクトリをソース管理に入れない。開発用のData Protection鍵で保護されたまま本番に持ち込むと、読めなくなることがある- Data Protectionの鍵と署名鍵は別物。前者は保存時の対称暗号、後者はトークン署名の非対称暗号で、両方を設定する
- IdentityServerはX.509証明書の有効期限を検証しない。期限切れの証明書でも署名はできてしまう。期限は技術的な強制ではなく、運用上の取り決めになる
PropagationTimeは、クライアントやAPIがキーをキャッシュする最長時間より長くする
署名に使えるアルゴリズムの一覧や、HSMやクラウドKMSで署名する構成、鍵が漏えいしたときの対応手順も、このスキルの節に分かれています。
指針を実装に引き込む使い方
プラグインを入れただけでは、Claudeがどのスキルを使うかは作業の文面しだいです。プロジェクトの CLAUDE.md に、認証まわりの作業でスキルを確認するよう書いておくと、読み込まれやすくなります。次は記述の一例です。
## 認証・認可
- IdentityServerの設定やトークン関連の変更では、duende-skillsのスキルを参照する
- クライアント定義を変えたら、`dotnet build` と統合テストを実行して結果を確認する
- ライセンスの権限エラーに備え、Server-Side Sessionsや鍵管理を触る変更では起動確認まで行うテストの書き方は identity-testing-patterns が扱い、WebApplicationFactoryでトークン発行をモックする方針です。ASP.NET Core側の統合テストの回し方はClaude CodeでASP.NET Core Web APIを開発するに手順があります。プラグインやスキルの全体像はClaude Codeの全体像を参照してください。
DPoPを入れる例で読み方を確認する
identityserver-token-security はDPoPの設定を、サーバー側とAPI側の両方で示します。クライアント側では RequireDPoP = true を指定します。API側ではJWT bearerにDPoP処理を足し、リプレイ検出用にキー付きHybridCacheを登録します。
DPoPのリプレイ検出は既定で有効で、キー付きHybridCacheが未登録だと、証明の検証時に InvalidOperationException が出ると書かれています。複数インスタンスで動かすときは、HybridCacheの第2層として IDistributedCache(Redisなど)も登録する、という指針です。一般的なDPoP解説では抜けやすい点です。
エディション条件も明記されています。同スキルの表では、DPoPはEnterpriseエディションが必要で、mTLSは全エディションで使える項目を含みます。導入するトークン保護の方式が、契約中のライセンスで使えるかは先に確かめる価値があります。
提供元の評価結果をどう読むか
READMEは、各スキルを7〜18個の現実的なプロンプトで評価していると説明します。スキルを読み込んだ場合と、読み込まない基準の場合の両方で答えさせ、あらかじめ決めた判定項目で採点する方式です。2026年10月16日の結果(claude-opus-5.5、6回目)は、277の評価・26スキル・1,236項目で、スキルありが1,236項目中1,236項目(100%)、スキルなしが875項目(70.8%)と載っています。
差分が大きいのは、新しい機能や、公開情報が少ない機能のスキルです。
| スキル | スキルあり | スキルなし | 差 |
|---|---|---|---|
identityserver-duende-storage | スキルあり41/41 | スキルなし0/41 | 差+100.0% |
identityserver-usermanagement | スキルあり39/39 | スキルなし7/39 | 差+82.1% |
identityserver-saml | スキルあり46/46 | スキルなし17/46 | 差+63.0% |
identityserver-upgrade-v7-to-v8 | スキルあり37/37 | スキルなし14/37 | 差+62.2% |
identityserver-configuration | スキルあり82/82 | スキルなし73/82 | 差+11.0% |
一般に知られた設定(identityserver-configuration)では差が11%にとどまり、プレビュー機能や新版の移行では大きく開きます。モデルの学習時点にない情報ほど、スキルの効き目が大きいという読み方ができます。
ただし、この数字は提供元が自分で用意した判定項目での自己評価です。第三者の再現は載っていません。自分のプロジェクトで効くかは、実際の作業で「スキルあり」と「なし」を比べて見るのが確実です。
導入前に押さえる注意点
- 対象は認証・認可に限られます。C#の一般的な書き方やEF Coreは別のスキル集の領分です
- スキルの内容はDuendeのバージョンに依存します。移行スキルが前提とするのはv7.4からv8.0です。それ以外の版を使っているなら、スキルが示すAPI名が手元のコードと合うか確かめてください
- 認証基盤の変更は、Claudeに書かせたあとにテストで確かめます。署名鍵、redirect URI、ライセンスは、コードが通っても運用で落ちる箇所です
- 利用できるのはClaude Codeに限りません。READMEはCopilot CLI、VS Code、Cursor、Codexへの導入手順も載せています
まとめ
duende-skillsは、IdentityServerを使う.NETチームが、設定・トークン保護・BFF・移行をClaude Codeに任せるときの下地になります。効果が出やすいのは、v8への移行のように、モデルの一般知識だけでは外しやすい作業です。まず identityserver-upgrade-v7-to-v8 が要る場面で入れて、結果をテストで確かめるところから始めると、効き目を測りやすくなります。