2016-11-29 11 views
0

Windowsサービスに関する経験があり、IdentityServer3に慣れてきています。私の現在のソリューションはIISExpressでうまく動作しますが、IISで動作させることはできません。だから、Windowsサービスでそれをホストするほうが簡単かもしれないと思ったが、起動して実行するためのサンプルを見つけることができなかった。誰もこのアプローチをとっていますか?IdentityServer3をWindowsサービスとして実行する方法

まず、自分のOnStartメソッドでIS3スタートアップクラスをインスタンス化し、次にコンフィグレーションメソッドを呼び出して認証サーバを作成する必要がありますが、そのメソッドはIAppBuilderパラメータを受け取り、これを作成する方法はわかりません。任意のアイデアをいただければ幸いです。私はこれに似た何かをやっている

+1

Jpaull、それは私の場合は、同様に、その優れたIISの展開、主に証明書&ホスト名の問題に関する問題を解決することだった初期の回である。そのエラーを投稿し、その解決策を見つけます。要するに、IDS3をコンソールアプリケーションとして実行することもできます(サンプルはidentityserver3 GITで利用可能です)。長期的に見ると、IISでホストする方が常に優れています。 – Sivalingaamorthy

+0

答えを探すためにここに来る人のためのちょうど最後のコメント。私はIISに戻ってIdentityServerを実行することになりました。 Windowsサービスで実行しようとする際に経験した問題を完全に解決したことはありませんでした。 – jpaull

答えて

1

...

public partial class ServiceHost : ServiceBase 
{ 
    private IDisposable _service; 

    public ServiceHost() 
    { 
     InitializeComponent(); 
    } 

    public void Start(string[] args) { OnStart(args); } 

    protected override void OnStart(string[] args) 
    { 
     var options = new StartOptions("https://localhost:44331/"); 

     _service = WebApp.Start(options, Configuration); 
    } 

    protected override void OnStop() 
    { 
     _service?.Dispose(); 
    } 

    private static void Configuration(IAppBuilder app) 
    { 
     var factory = new IdentityServerServiceFactory() 
      .UseInMemoryUsers(Users.Get()) 
      .UseInMemoryClients(Clients.Get()) 
      .UseInMemoryScopes(Scopes.Get()); 

     var idsrvOptions = new IdentityServerOptions 
     { 
      Factory = factory, 
      SigningCertificate = Cert.Load(), 
      AuthenticationOptions = new AuthenticationOptions 
      { 
       // This is where we configure External Identity Providers 
       IdentityProviders = ConfigureIdentityProviders 
      } 
     }; 

     app.UseIdentityServer(idsrvOptions); 
    } 

    private static void ConfigureIdentityProviders(IAppBuilder app, string signInAsType) 
    { 
    } 
} 
+0

私はIdentityServerの内部にポップアップした問題に取り組んでいますが、私はこれと同様のことをしました。私はそれが完全に働くまで自分の解決策を投稿するのを待っていました。 1つの違いは、WebApp.StartメソッドをConfigurationパラメータなしで呼び出し、ConfigurationはIdentityServer Startupクラス内で実行されていることです。あなたのソリューションが完全に動作しテストされているのであれば私は不思議です。それは起こりそうもないようですが、私がIS内で見ている問題を修正する方法であったかもしれません。 – jpaull

+0

@jpaull、はい私の解決策が働いています。私が上に掲示したものとの唯一の違いは、Configuration、ConfigureIdentityProviders、およびWebApp.Startのものは、いくつかのカスタムパラメータを受け入れるパブリック静的IDisposable Startメソッドを公開する別のクラスに実際にラップされていることです。あまりにも詳細なように思われたので、私はそれを投稿しませんでした。 また、この方法を開発目的で使用しています。私たちはおそらくIISを使用しています(ただし、まだ試していません)。 –

関連する問題