0

我有VS2013 MVC5項目與個人用戶帳戶。我修改了Startup {Configuration(IAppBuilder app)},以便UseOpenIdConnectAuthentication是唯一允許的身份驗證。UseOpenIdConnectAuthentication之後,如何將來自Security Token的聲明放入OwinConext.User中的Controller.User(Current HttpContext)中?

用戶可以使用開箱即用的MVC項目模板管道在AspNetIdentity數據庫中進行註冊。註冊後,用戶使用OIDC登錄。

OpenID Connect STS(IdentityServer3 with AspNetIdentity)返回一個包含聲明和角色的安全令牌。這些索賠可從ClaimsPrincipalRequest.GetOwinContext().Authentication.User中獲得。

但是,Controller.User(當前HTTP請求上下文)中缺少這些聲明。

讓兩個ClaimsPrincipal匹配是一件好事嗎?

問題:如果這樣怎麼辦?其中我這樣做嗎?我不是專家,不知道OpenIdConnectAuthenticationNotifications.SecurityTokenValidatedApplication_PostAuthenticateRequest

我意識到這是混合MVC5 System.Web與OWIN中間件的OpenIdConnect,而不是默認的MVC5項目認證中間件的副作用。

+0

我很高興看到你有OIDC與IdentityServer3和AspNetIdentity合作。我正在努力讓我的客戶未知或未經授權的錯誤工作。我在這裏發佈我的問題:http://stackoverflow.com/questions/29607527任何機會,你可以看看和建議? – 2015-04-13 14:14:10

回答

1

如果您使用ASP.NET 4.6和Katana 3.x,則應該能夠從ClaimsPrincipal.Current訪問您想要的聲明。

查看下面的評論

+0

謝謝你;是的,我知道ClaimsPrincipal.Current。我的問題真的想問問在管道的哪個位置應該做什麼?我建議將代碼插入到兩個方法之一(以上命名)或其他地方;我應該在哪裏放? – subsci 2015-03-02 20:54:22

+0

我不確定我在追隨。如果ClaimsPrincipal.Current包含您需要的聲明,並且ClaimsPrincipal.Current在您想要使用這些值的代碼作用域中可用,那麼爲什麼還要將它們複製到別處? – vibronet 2015-03-02 21:54:42

+1

由於我有一個MVC應用程序,爲方便起見,如果Controller.User具有來自Open ID Connect初始化的聲明的信息,那麼它很有用。例如。 VS MVC模板代碼使用Controller.User。就這麼簡單。 – subsci 2015-03-04 17:11:32

相關問題