문제

SharePoint 2013 Visual Studio의 Apps에는 OAuth를 사용하여 SharePoint 2013 ClientContext에 연결하는 DokenHelper 클래스가 있습니다. 나는이 클래스를 사용하여 SharePoint 2013 (Office 365)에 원격으로 연결합니다.

TokenHelper.getClientContextWithAuthorizationCode 메서드를 사용하여 httpContext.current가있는 웹 응용 프로그램에서 실행될 때 OAuth 권한 코드로 ClientContext를 가져올 수 있습니다. 그러나 HttpContext.current가없는 콘솔 응용 프로그램이나 다른 컨텍스트 에서이 동일한 코드를 사용하면 원격 SharePoint 2013 서버가 (400) 잘못된 요청을 반환합니다.

Microsoft.IdentityModel.s2s.protocols.oauth2.oauth2s2sclient.issue () 메소드로 문제가 좁혀졌습니다. httpContext가 있으면 작동하지만 (400) 잘못된 요청 오류가 없어

HttpContext를 가짜로 MOQ 프레임 워크를 사용해 보았지만 이는 작동하지 않습니다.

여기서는 tokenhelper.getAccessToken 메서드에서 오류가 발생합니다.

OAuth2S2SClient client = new OAuth2S2SClient();
OAuth2AccessTokenResponse oauth2Response;
try
{
    oauth2Response =
        client.Issue(AcsMetadataParser.GetStsUrl(realm), oauth2Request) as OAuth2AccessTokenResponse;
}
.

아이디어가 있습니까?

도움이 되었습니까?

해결책

마침내 내가 무엇을 잘못했는지 알아낼 수있었습니다.

1) OAuth 연결을 생성 할 때 반환 된 권한 코드는 해당 브라우저 세션에만 좋습니다.따라서 Wait End Services 또는 새로운 브라우저 세션에서 나중에 해당 권한 코드를 재사용 할 수 없었던 이유는 무엇입니까?

2) 리디렉션 페이지에서 Reverted eduve letved eduve retited 인증 코드를 사용하여 새 액세스 토큰을 만들었습니다.액세스 토큰에서 새로 고침 토큰을 검색 할 수 있습니다.

3) 새로 고침 토큰은 나중에 나중에 저장하고 재사용 할 수있는 것입니다. 백 엔드 코드 또는 새 브라우저 세션에서 클라이언트 컨텍스트를 만들 수 있습니다.

그래서, 간단히 & oauth 토큰을 재사용하려면 권한 부여 코드가 아닌 새로 고침 토큰을 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top