2015-06-04 24 views
4

有没有什么办法可以根据请求范围而不是应用范围为OpenIdConnectMessage设置RedirectUri属性?OWIN OpenIdConnect中间件 - 动态设置RedirectUri

我的应用服务于多个域(myapp.com,myapp.fr,..),并基于域,它确定了内容的默认语言。我需要在登录后通过IdP将用户带回到同一个域,所以我需要找到一种方法,即按照请求范围设置RedirectUri,而不是像在startup.cs中配置中间件选项那样设置应用范围。

回答

7

这可以通过Notification事件RedirectToIdentityProvider完成。事情是这样的:

Notifications = new OpenIdConnectAuthenticationNotifications 
       { 
        RedirectToIdentityProvider = async n => 
        { 
         n.ProtocolMessage.RedirectUri = n.OwinContext.Request.Uri.Host; 
         n.ProtocolMessage.PostLogoutRedirectUri = n.OwinContext.Request.Uri.Host; 
        }, 
        //other notification events... 
       } 

`

+0

你救了我,我完全忘了事件。我必须动态更改clientId。 –