AspNetWebApiベースのWebサービスとIdentityServer3ベースの認証サービスのセットがあります。すべてのWebサービスは、監視と診断に使用する単純なサービス情報エンドポイントをサポートしています。サービスバージョンとサーバー名を報告します。現在サービス情報エンドポイントをサポートしていない唯一のサービスは、IdentityServer3ベースの認証サービスです。
IdentityServer3ベースのサービスに単純なエンドポイントを追加する方法はありますか?でGitHubの問題812 Brockさんアレンは、「我々は、カスタムコントローラを追加する方法を持っているが、それは現在サポートされていない、文書化されていない、と本当に行われていない。」と言います 文書化されていない、サポートされていないルートを採用したくありません。
追加情報を含めるために検出エンドポイントを変更/拡張する方法はありますか?
これが私がこれをコーディングすることになった方法です。大まかに言うと、基本的にはControllersフォルダーを追加し、単一のGETアクションメソッドを使用してAuthenticationServiceInfoControllerクラスを作成し、起動時にそのコントローラーを登録しました。上記のコメントで述べたように、AuthenticationServiceInfoControllerは他の場所で定義されたベースServiceInfoControllerから継承したため、ソリューションはさらに複雑になりましたが、このサンプルからそれを排除しようとしました。したがって、コントローラーコードは次のようになります。
[RoutePrefix("api/v1/serviceinfo")]
public class AuthencticationServiceInfoController : IServiceInfoController
{
[Route("")]
[Route("~/api/serviceinfo")]
public IHttpActionResult Get()
{
try
{
ServiceInformation serviceInfo = new ServiceInformation();
serviceInfo.ServiceVersion = Global.serviceVersion;
return Ok(serviceInfo);
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
}
シンプルなインターフェースを実装しています。
public interface IServiceInfoController
{
IHttpActionResult Get();
}
そして、Identity Serverを構成するStartup.Configurationメソッドには、次のものがあります。
var idSrvFactory = new IdentityServerServiceFactory();
idSrvFactory.Register(new Registration<IServiceInfoController, Controllers.AuthencticationServiceInfoController>());
必要なのはそれだけだと思います。これは、Identity Server3ベースのサービスで適切に機能しています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加