2016-11-21 1 views
0

액세스 제어를 위해 oAuth2와 OpenID를 사용하여 얼마 전에 프로젝트를 수행했는데 제대로 작동하도록 관리했지만 지금은 새 프로젝트를 시작했고 토큰 유효성 검사를 다시 구현해야합니다. 이전 프로젝트와 동일한 패턴, 설정, 구성 및 기술을 사용했으며 (설정의 90 %는 동일 함) 토큰이 올바르게 채워지고 HTTP 요청이있는 헤더로 API에 전달되었습니다.oAuth2 토큰이 API에 의해 선택되지 않았습니다.

이전

Old Project Headers

번역 : { "ISS": "https://localhost" "AUD": "https://localhost/resources" "특급": 1479710870, "NBF": 1479707270, "CLIENT_ID"을 " 암시 적 ", " 범위 "[ "오픈 ID " "프로필 " "롤 " "웹 " ] "하위 ":"55dad807b33c2c2648342757 " "auth_time "1479705621, "IDP ":"idsrv " , "역할": "관리자", "기능"[ "폼보기", "폼 추가", "... 등" , "AMR"[ "비밀번호" ] }

New Project Headers

번역 : { "ISS": "https://localhost" "AUD": "https://localhost/resources" "특급": 1479711165, "NBF": 1479707565, "CLIENT_ID"을 "암시 " "범위 "[ "오픈 ID " "프로필 " "롤 " "웹 " ] "하위 ":"SYSTEM " "auth_time "1479707564, "IDP " : "idsrv", "역할 ":"System 사용자 " "기능 "[ "ADD_BUSS_UNIT " "ADD_EMP " "... 등 " ] "AMR "[ "비밀번호 " ] }

(Cache-control이 새 프로젝트에 추가되었으므로 문제가 될 수 있습니까? 있을 법하지 않습니까?)

어쨌든 컨트롤러에 연결되면 어떤 이유로 HttpContext.Current.User.Identity가 System.Security.Principal로 채워집니다.대신 내가 볼 것으로 예상되는 ClaimsIdentity의 WindowsIdentity :

올드

Old Project User

새로운

New Project User

두 프로젝트의 가장 큰 차이점은 새가 실행되는 것입니다 Windows Server 2008 R2 및 이전 버전은 Windows7에서 실행됩니다. IIS 버전은 동일하며 IIS의 설정도 동일하며 앞에서 설명한대로 대부분의 다른 설정은 동일합니다. API에 대한

내 시작 클래스 :

public void Configuration(IAppBuilder app) 
{ 
// Allow all origins 
app.UseCors(CorsOptions.AllowAll); 

JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>(); 
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

app.UseIdentityServerBearerTokenAuthentication(
    new IdentityServerBearerTokenAuthenticationOptions 
    { 
     Authority = Constants.STSAuthEndPoint, 
     RoleClaimType = "role", 
     RequiredScopes = new[] { "web" } 
    }); 
} 

내 측면에서 아이디어의 부부에 왜 작동하지 않습니다 :

  1. 신원 도용이 - 그것은 그 IIS가 될 수 또는 Windows Server는 가장하는 사용자? 두 서버 사이의 설정을 확인했는데 모든 것이 동일하게 보입니다.
  2. SUB 값 - 새 프로젝트에서 사용자 이름을 사용하고 이전에 Guid 형식 ID를 사용했습니다. 하위 값이 두 값의 조합으로 표시되는 것을 본 기억이 있지만 문제가 발생할 수 있는지 여부는 알 수 없습니다.
  3. 역할 - 역할 이름의 공간이 문제를 일으킬 수 있습니까?
  4. 로그인 화면 - 이전 프로젝트보다 훨씬 더 사용자 정의 된 새 프로젝트의 새 로그인 화면을 만들었지 만 로그인이 작동해도 API가 해당 사용자를 선택하지 않습니다.

나는 제공 할 수있는 많은 추가 정보가 있지만 게시물을 너무 오래 보내지 않으므로 추가 정보가 필요한 경우 알려 주시기 바랍니다.

제공되는 도움에 감사드립니다.

+0

은 'Windows 인증'을 사용하는 새 응용 프로그램입니까? – Developer

+0

아니, 아니야. 익명을 제외한 모든 인증을 사용 중지했지만 문제가 발견되어 잠시 후 답변이 업데이트됩니다. –

답변

0

마치 붉은 청어처럼 보이고 실제 문제는 내 OWIN Startup 클래스가 실행되지 않았다는 것입니다. 나는 내 시작 클래스로 단계를 시도하기 때문에이를 발견 할 수 없었다, 그래서 나는 다음과 같은 기사가에 비트를 읽고 발견 : 나는 Microsoft.Owin.Host.SystemWeb를 설치

OwinStartup not firing

을 너겟과 짜잔을 사용하는 프로젝트 패키지! 지금 작동하는 것 같습니다!

관련 문제