2017-10-16 1 views
1

C#에서 API에서 그룹을 삭제하려고하면 승인 401 오류가 발생하지만 우편 발송자에서 시도하면 성공합니다. 같은 명령을 실행하기 때문에 다소 이상하게 느껴지지만 작동하지 않습니다 ...C#에서 Microsoft Graph API 그룹 삭제

문제는 제가 가지고 있다고 생각하는 것은 Office 365의 그룹을 삭제하려면 내 계정에 로그인해야하며 응용 프로그램에서 ' t는이 동작을 만든다.

나는 모두 Group.ReadWrite.All에 액세스 권한과 응용 프로그램에 대한 다른 모든 권한을 부여했습니다. 그래서 Azure AD에 대한 로그인 자격 증명을 전달해야하거나 올바르지 않다고 생각합니다.

Request : 
    StatusCode: 401, 
    ReasonPhrase: 'Unauthorized', 
    Version: 1.1, 
    Content: System.Net.Http.NoWriteNoSeekStreamContent, 
    Headers: 

편집은 내 GetAccessToken()을 사용하고 우체부에 OAUTH 2.0 검증을 사용할 때 내가 가진 토큰을 사용하지 않도록 노력했다. 그 베어러 토큰을 가져 가면 스크립트를 실행하고 DELETE를 사용하는 데 아무런 문제가 없습니다.

그래서 내 질문은 C# 코드와 전화 우표 Auth2.0에서 ADAL 사용의 차이. 우편 게시자를 사용할 때 Azure 계정에 로그인하는 로그인 페이지가 나타나면이 코드를 복제 할 수 있습니까? C#에서의 인증을 위해서는 this example을 사용합니다.

하나로서

가 채팅에 쓴 NEW EDIT, 나는 액세스 토큰을 확인하고 내가 웹 사이트에 미친 역할.

roles: [ 
    "EduRoster.Read.All", 
    "Mail.ReadWrite", 
    "User.ReadWrite.All", 
    "Calendars.Read", 
    "People.Read.All", 
    "Group.Read.All", 
    "Directory.ReadWrite.All", 
    "MailboxSettings.Read", 
    "Contacts.ReadWrite", 
    "Group.ReadWrite.All", 
    "Notes.Read.All", 
    "Directory.Read.All", 
    "User.Read.All", 
    "Mail.Read", 
    "Calendars.ReadWrite", 
    "Mail.Send", 
    "MailboxSettings.ReadWrite", 
    "Contacts.Read", 
    "Member.Read.Hidden", 
    "Notes.ReadWrite.All"] 
+0

은. –

+0

몇 가지 추가 정보를 추가했지만 아무도이 문제를 일으키지 않았습니까? –

답변

0

올바른 길을 가고 있습니다.

Delete Group 방법 모두 지원 위임 (Authorization Code 또는 Implicit OAUTH 부여) 및 응용 프로그램 (Client Credentials OAUTH 부여) 모델. 위임 및 응용 프로그램 흐름에는 모두 Group.ReadWrite.All 범위가 필요합니다.

401 Unauthorized 오류가 발생하는 이유는 응용 프로그램이 연결된 사용자에게 Admin Consent을받지 못했기 때문입니다. Client Credentials을 사용할 때 응용 프로그램이 거주자와 상호 작용하기 전에 인증 할 사용자가 없기 때문에 관리자는 먼저 응용 프로그램과 요청한 범위를 명시 적으로 승인해야합니다.

도보는 v2 Endpoint and Admin Consent입니다.

+0

안녕하세요 다시 marc, 당신이 활동적이며 나를 좋아하는 사람들을 돕는 것을 보니 반갑습니다! 나를 위해 그것을 해결 한 한가지는/beta에서 /v1.0으로 바뀌는 것이 었습니다. –

+1

'/ beta'엔드 포인트에 문제가있을 가능성이 있습니다. 새로운 기능에 대한 POC 테스트에는'/ beta' 만 사용해야합니다. 지원되는 엔드 포인트가 아닙니다. 프로덕션 용도로는'/ v1.0' 만 지원됩니다. –

+0

마크가 v1.0을 사용하면서 말한 것에 +1. 그러나, 그것은 여전히 ​​매우 이상합니다. 그룹 삭제의 경우/beta 및 /v1.0은 동일해야합니다. 엔지니어링 팀에게 빠른 검토를 요청합니다. –

1

일부 설명 : 토큰이 있고 시도중인 API 호출을 수행하는 데 필요한 소유권/사용 권한이없는 경우 403 금지됨을 얻어야합니다. 토큰이 API 요청에 누락되거나 조작 된 경우 401 Unauthorized가 표시됩니다. https://developer.microsoft.com/en-us/graph/docs/concepts/errors을 참조하십시오.

그래프로 직접 HTTP REST 호출을 하시겠습니까? 아니면 클라이언트 라이브러리를 사용하고 있습니까? Microsoft Graph 호출과 함께 토큰 획득 예제를 시작하려면 몇 가지 샘플을 살펴 보는 것이 좋습니다. https://github.com/microsoftgraph/console-csharp-snippets-sample (.Net 클라이언트 라이브러리 사용) 또는 https://github.com/microsoftgraph/aspnet-connect-rest-sample (직접 HTTP REST 호출 사용)을 시도하십시오.

또한 (로그인 한) 사용자의 컨텍스트 또는 응용 프로그램의 컨텍스트 (로그인 한 사용자 없음)에서 토큰을 얻는 중입니까? 전자의 경우 위임 된 권한을 요청해야합니다. 후자의 경우 "응용 프로그램"권한을 요청해야합니다.이러한 개념을 참조하십시오 : 오류의 세부 오류 메시지 란이 도움이 https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_userhttps://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service

희망,

+0

안녕하세요 댄, github repos를 위해, 나는 그들을 보았고 내용과 당신이 인증을 한 곳을 얻었습니다. 그러나 비밀 번호와 객체 ID를 사용할 때보 다 인증이 훨씬 더 진보 된 것 같습니다. 코드 예제에서 완료 한 내용을 완전히 얻지 못한다고 생각합니다. 것은 내가 내 응용 프로그램에 위임 및 응용 프로그램에 대한 모든 권한을 부여했기 때문에 왜 금지 된 오류가 발생하는지 알지 못합니다. 나는 그 주제에 조금 붙어 있습니다 ..... –

+0

당신은 앱에 동의 했습니까? Azure 포털에서 "허가 권한"을 클릭 했습니까? 코드를 통해 획득 한 액세스 토큰을 가져 와서 https://jwtinspect.azurewebsites.net/를 사용하여 토큰의 클레임을 볼 수 있습니까? "scp"또는 "역할"클레임은 무엇입니까? –

+0

내 질문에 역할을 추가했습니다. –

관련 문제