如何将IdentityServer3作为Windows服务运行

时间:2016-11-29 20:19:31

标签: windows-services identityserver3

我有一些使用Windows服务的经验,而且我刚刚尝试使用IdentityServer3。我当前的解决方案在IISExpress中运行良好,但我无法在IIS中使用它。因此,我认为在Windows服务中托管它可能更容易,但我无法找到任何样本来启动和运行。有没有人采取这种方法?

我的第一个问题是,我需要在OnStart方法中实例化我的IS3 Startup类,然后调用Configuration方法创建我的认证服务器,但该方法采用IAppBuilder参数,我不知道如何创建它。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分: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)
    {
    }
}