我成功实现了IdentityServer3。我使用隐式流和这个Owin启动配置创建了ASP.NET MVC5客户端:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{ AuthenticationType = "Cookies" });
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "mvc.client",
Authority = Constants.ServerUri,
RedirectUri = Constants.MvcClientUri,
ResponseType = "id_token",
Scope = "openid profile",
UseTokenLifetime = false,
SignInAsAuthenticationType = "Cookies",
Notifications = new OpenIdConnectAuthenticationNotifications
{ SecurityTokenValidated = TokenValidatedNotification },
});
在IIS Express上本地运行完美,但在部署到生产IIS服务器时失败。在两种情况下身份验证都是成功的 - 从同一个IdentityServer返回id_token
,但是在生产用户从未进行身份验证时,不会触发通知。项目参考Microsoft.Owin.Host.SystemWeb
汇编。我已将异常处理OwinMiddleware
注册为第一个,但未捕获任何未处理的异常。
答案 0 :(得分:0)
确保生产IIS将网站配置为使用git import
身份验证,因为您不依赖于IIS的身份验证基础结构,您希望请求流经IIS并转到负责的OWIN中间件用于身份验证。