我有一些使用Windows服务的经验,而且我刚刚尝试使用IdentityServer3。我当前的解决方案在IISExpress中运行良好,但我无法在IIS中使用它。因此,我认为在Windows服务中托管它可能更容易,但我无法找到任何样本来启动和运行。有没有人采取这种方法?
我的第一个问题是,我需要在OnStart方法中实例化我的IS3 Startup类,然后调用Configuration方法创建我的认证服务器,但该方法采用IAppBuilder参数,我不知道如何创建它。任何想法都将不胜感激。
答案 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)
{
}
}