OpenidConnect与IIS应用程序

时间:2019-06-29 01:33:53

标签: c# openid openid-connect

我正在尝试将owin.openidconnect与idp服务器一起使用,在本地上一切正常,但是当部署到iis服务器上时,我在OpenIdConnect的通知中看不到 MessageReceived 事件触发。当我向owin发起挑战时,页面重定向了IDP页面,并在登录后返回到应用程序,但该页面未经过身份验证。

1 个答案:

答案 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更改为末尾的“ /”。