我正在尝试将owin.openidconnect与idp服务器一起使用,在本地上一切正常,但是当部署到iis服务器上时,我在OpenIdConnect的通知中看不到 MessageReceived 事件触发。当我向owin发起挑战时,页面重定向了IDP页面,并在登录后返回到应用程序,但该页面未经过身份验证。
答案 0 :(得分:0)
两天后,我在不同的论坛上折腾了头,终于找到了答案。问题是,当我在IDP服务器上为客户端ID设置redirect-uri时,我没有在URL末尾添加“ /” 。 但是OWIN组件中的AuthenticateCoreAsync具有以下检查
如果(Options.CallbackPath.HasValue && Options.CallbackPath!=(Request.PathBase + Request.Path)) 返回null;
我的应用程序URL如 http:/// 和 CallbackPath 是 / appName 和 Request.PathBase + Request.Path < / strong>就像'/ appName'+'/'。因此没有匹配项,并且无法通过身份验证。
所以在这里我有两种选择,一种是按如下所示设置回调URL
选项1 新的OpenIdConnectAuthenticationOptions { AuthenticationType =“ OpenIdConnect”, 权限= OIDC_baseUrl, ClientId = clientId, ClientSecret = clientSecret, RedirectUri = redirectUri, ResponseType =“代码id_token”, 范围=“ openid”, CallbackPath ='/ appName /' 通知=新的OpenIdConnectAuthenticationNotifications { AuthorizationCodeReceived =异步(上下文)=> { 等待GetAccessTokenAndStoreWithIdentity(context); } } }
选项2:将IDP服务器上的重定向uri更改为末尾的“ /”。