액세스 제어를 위해 oAuth2와 OpenID를 사용하여 얼마 전에 프로젝트를 수행했는데 제대로 작동하도록 관리했지만 지금은 새 프로젝트를 시작했고 토큰 유효성 검사를 다시 구현해야합니다. 이전 프로젝트와 동일한 패턴, 설정, 구성 및 기술을 사용했으며 (설정의 90 %는 동일 함) 토큰이 올바르게 채워지고 HTTP 요청이있는 헤더로 API에 전달되었습니다.oAuth2 토큰이 API에 의해 선택되지 않았습니다.
이전
번역 : { "ISS": "https://localhost" "AUD": "https://localhost/resources" "특급": 1479710870, "NBF": 1479707270, "CLIENT_ID"을 " 암시 적 ", " 범위 "[ "오픈 ID " "프로필 " "롤 " "웹 " ] "하위 ":"55dad807b33c2c2648342757 " "auth_time "1479705621, "IDP ":"idsrv " , "역할": "관리자", "기능"[ "폼보기", "폼 추가", "... 등" , "AMR"[ "비밀번호" ] }
신
번역 : { "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 :
올드
새로운
두 프로젝트의 가장 큰 차이점은 새가 실행되는 것입니다 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" }
});
}
내 측면에서 아이디어의 부부에 왜 작동하지 않습니다 :
- 신원 도용이 - 그것은 그 IIS가 될 수 또는 Windows Server는 가장하는 사용자? 두 서버 사이의 설정을 확인했는데 모든 것이 동일하게 보입니다.
- SUB 값 - 새 프로젝트에서 사용자 이름을 사용하고 이전에 Guid 형식 ID를 사용했습니다. 하위 값이 두 값의 조합으로 표시되는 것을 본 기억이 있지만 문제가 발생할 수 있는지 여부는 알 수 없습니다.
- 역할 - 역할 이름의 공간이 문제를 일으킬 수 있습니까?
- 로그인 화면 - 이전 프로젝트보다 훨씬 더 사용자 정의 된 새 프로젝트의 새 로그인 화면을 만들었지 만 로그인이 작동해도 API가 해당 사용자를 선택하지 않습니다.
나는 제공 할 수있는 많은 추가 정보가 있지만 게시물을 너무 오래 보내지 않으므로 추가 정보가 필요한 경우 알려 주시기 바랍니다.
제공되는 도움에 감사드립니다.
은 'Windows 인증'을 사용하는 새 응용 프로그램입니까? – Developer
아니, 아니야. 익명을 제외한 모든 인증을 사용 중지했지만 문제가 발견되어 잠시 후 답변이 업데이트됩니다. –