새로운 소식입니다. 누군가가 나에게 도움이 될 수있어, 내 문제에 대해 지금 거의 한달 동안 미쳐 가고있다. ( 간단히 말해서 : 나는 ID 서버 프로젝트, webapi 프로젝트 및 각 클라이언트이다. 클라이언트 요청은 인증을 받고 id_token과 access_token을 얻는다.), access_token은 내가 가진 프로젝트 webapi을 보내WebApi에서 IdentityServer 사용자 인증
var idServerBearerTokenAuthOptions = new IdentityServerBearerTokenAuthenticationOptions {
Authority = "https://localhost:11066/IdentityServer/identity",
ValidationMode = ValidationMode.ValidationEndpoint,
AuthenticationType = "Bearer",
RequiredScopes = new[] { "permissions", "openid" },
DelayLoadMetadata = true
};
app.UseIdentityServerBearerTokenAuthentication(idServerBearerTokenAuthOptions);
를 내가 나에게 현재 logedin 사용자
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest();
builder.Register(c => new ClaimsIdentityApiUser((ClaimsIdentity)Thread.CurrentPrincipal.Identity)).As<IApiUser>().InstancePerRequest();
을 받아야하는 Autofac을 가지고 있지만 Thread.CurrentPrincipal.Identity는 아무런 관계가 없으며, 또한 ClaimsPrincipal 현재. 신원은 아무것도 없다. 내가 무엇을 놓치고 있는가?
p.s. 이 질문에 비슷한 문제가 Protecting webapi with IdentityServer and Autofac - can't get claims하지만 분명히 동일한 솔루션이나 설정되지 않았습니다.
스레드 사용자 대신 HttpContext.User를 보았습니까? –
Travis에게 답해 주셔서 감사합니다. 이것도 컨트롤러 (RequestContext와 같은)에서 사용하기위한 것이라 생각하지만, 나는 owin 파이프 라인에서 사용자를 식별하려고한다. 아니면 내가 틀렸어? (그 경우 나에게 간단한 예를 들어주세요) – theCuriousOne
이것은 분명 할 수 있지만 authorize 속성을 추가 했습니까? 그것 없이는 아무 것도 인증을하지 않고 ID는 null이 될 것입니다. –