0

У меня есть VS2013 MVC5 проект с Индивидуальные учетные записи пользователей. Я изменил Startup {Configuration(IAppBuilder app)}, так что только допустимая аутентификация - UseOpenIdConnectAuthentication.После того, как UseOpenIdConnectAuthentication, как подать претензии из маркера безопасности в Controller.User (Current HttpContext), которые находятся в OwinConext.User?

Пользователи могут зарегистрироваться в БД AspNetIdentity с использованием встроенного шаблона шаблона проекта MVC. После регистрации пользователи регистрируются с помощью OIDC.

OpenID Connect STS (IdentityServer3 с AspNetIdentity) возвращает маркер безопасности с претензиями и ролями. Эти претензии доступны из аутентифицированного ClaimsPrincipal в Request.GetOwinContext().Authentication.User.

Однако эти претензии отсутствуют в Controller.User (контекст текущего HTTP-запроса).

Это хорошая вещь, чтобы сделать два матча ClaimsPrincipal?

ВОПРОС: Если да, то как и где do I do that? Я не эксперт и не удивляюсь, что насчет OpenIdConnectAuthenticationNotifications.SecurityTokenValidated или Application_PostAuthenticateRequest?

Я понимаю, что это побочный эффект смешивания MVC5 System.Web с промежуточным программным обеспечением OWIN для OpenIdConnect, а не промежуточным программным обеспечением для проверки подлинности проекта MVC5 по умолчанию.

+0

Я рад видеть, что у вас есть РСИН работы с IdentityServer3 и AspNetIdentity. Я изо всех сил пытаюсь заставить мою работу с ошибкой, что клиент неизвестен или несанкционирован. Я разместил здесь свой вопрос: http: //stackoverflow.com/questions/29607527. Любой шанс вы можете посмотреть и посоветовать? –

ответ

1

Если вы работаете с ASP.NET 4.6 и Katana 3.x, вы должны иметь доступ к требованиям, которые вы хотите получить от ClaimsPrincipal.Current.

Смотрите комментарий ниже

+0

спасибо; да, я знаю ClaimsPrincipal.Current. Мой вопрос действительно хочет спросить, где это должно быть сделано? Я предложил вставить код в один из двух методов (названный выше) или где-то еще; где я должен это поставить? – subsci

+0

Я не уверен, что следую. Если ClaimsPrincipal.Current содержит нужную вам формулу, а ClaimsPrincipal.Current доступен в области кода, в которой вы хотите использовать эти значения, почему вы хотите скопировать их в другом месте? – vibronet

+1

Поскольку у меня есть приложение MVC, для удобства полезно, если Controller.User имеет информацию из заявок, инициализированных Open ID Connect. Например. код шаблона VS MVC использует Controller.User. Все просто. – subsci