0

인증/권한 부여 시나리오를 테스트하기 위해 개발 한 웹 양식 응용 프로그램이 있습니다. 테스트 프로젝트를 만드는 동안 인증 메커니즘 코드가 없도록 프로젝트를 만든 "인증 없음"을 선택했습니다. 필자는 푸른 색 세입자에게 웹 사이트를 게시하고 기능 아래의 "인증/권한 부여"에서 Azure Active Directory 인증을 활성화했습니다. 내 웹 응용 프로그램을 가리키는 Azure AD 응용 프로그램을 만들었습니다. 기본 페이지를 클릭하면 이제 앱이 인증되고 모든 것이 정상적으로 작동하는 것처럼 보입니다.Azure Active Directory에서 인증하는 동안 사용자 정보 얻기

그러나 Visual Studio 내에서 응용 프로그램을 로컬로 실행할 때 적절한 헤더 (예 : X-MS-CLIENT-PRINCIPAL-NAME)가 없으므로 사용자 정보를 얻을 수 없습니다. 다음 단계는 그래프 API를 호출하여 자세한 사용자 정보를 얻는 것입니다.

참고 : 나는 사용자를 인증하는 내 웹 프로젝트에서 OWIN 코드를 포함 할 수 있어요,하지만 난 내 기존에-프렘 Windows 인증 응용 프로그램에 대한 최소한의 코드를 변경합니다. 난 비주얼 스튜디오 내에서 로컬 응용 프로그램을 실행할 때

어떤 도움/지침

그러나
+0

인터넷뿐만 아니라 인트라넷에서 응용 프로그램을 사용할 때 싱글 사인온 (single sign on) 경험이 있습니까? 그때 당신은 하늘색 AD 연결을 볼 필요가 있습니다. 하늘색 AD의 경우 그래프 API를 사용하여 LDAP를 사용할 온 프레미스 AD에서 사용자 정보 등을 인증하고 가져옵니다. – Aravind

+0

사이트를 탐색 할 때 내 사용자가 자신의 AD 로그인 자격 증명을 입력하도록 이미 요청했기 때문에 단일 로그온이 필요하지 않을 수 있습니다. Azure AD를 통해 사용자를 인증하고 싶습니다. 그러나 VS에서 응용 프로그램을 실행할 때 Auth Headers를 가져올 수 없어 Graph API를 호출하는 클레임 ​​주체를 가져올 수 없습니다. – Ashish

+0

앱을 AAD에 연결하기 만하면됩니다. 기본 페이지는 라이브 로그인 페이지로 이동하고 거기에서부터 진행합니다. 일반적으로 MVC app의 경우 제어기의 [Authorize] 속성에 그래프 API를 사용하여 인증/권한 부여 ADAL 호출을 추가하는 것이 일반적입니다. 그런 다음 필요에 따라 그래프 API를 사용하여 얻은 사용자 정보를 사용하십시오. – Aravind

답변

2

, 나는 더 적절한 헤더, 예를 들어 X-MS-CLIENT 사용할 수 없습니다로 사용자 정보를 얻을 수 아니다 -PRINCIPAL-NAME. 다음 단계는 그래프 API를 호출하여 자세한 사용자 정보를 얻는 것입니다.

이것은 예상됩니다. X-MS-CLIENT-PRINCIPAL-NAME 헤더 (및 관련 헤더)는 app 서비스에서 실행되는 인증/권한 부여 모듈에 의해 추가됩니다. Visual Studio에서 로컬로 실행할 때이 모듈이 없으므로이 요청 헤더가 없습니다.

대신 요청 헤더를 보는, 로컬 및 응용 프로그램 서비스에서 동일한 코드를 사용하려면, 나는 사용자 정보를 표면 .NET API를, 같은 ClaimsPrincipal.Current.Identity.Name 등을 사용하는 것이 좋습니다 . Azure App Service에서 로컬로 Windows 인증을 사용하든, 인증/권한 부여를 사용하든 상관없이 올바르게 채워 져야합니다.

인증/승인의 기본 메커니즘에 대한 자세한 내용은 https://cgillum.tech/2016/02/01/architecture-of-azure-app-service-authentication-authorization/을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 그래프 API를 통해 사용자 그룹 정보를 얻기 위해 ClaimsPrincipal을 사용하여 코드 샘플을 가르쳐 주시겠습니까? – Ashish

+1

다음은 그룹 정보를 가져 오는 그래프 API 문서입니다. https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/users-operations#get-all-group-memberships-transitive. 다음은 그래프 API를 사용자 (인증/권한 부여와 관련하여)로 호출하는 방법에 대한 정보입니다. https://cgillum.tech/2016/03/25/app-service-auth-aad-graph-api/ –

+0

도움을 주셔서 감사합니다. 헤더를 통해 필요한 정보를 성공적으로 가져올 수있었습니다. 그러나 몇 가지 질문이 있습니다. 1) ClaimsPrincipal에서 토큰, 새로 고침 토큰 등의 헤더 정보를 채울 수있는 방법이 있습니까? 2) 리소스 관리자를 통해 config/authSettings를 수정할 때마다 "이 페이지를 볼 수있는 권한이 없습니다."라는 오류가 나타납니다. 편집 한 json 파일이 모든 구문을 포함하는 올바른 형식인지 확인했습니다. 웹 사이트를 삭제하고 다시 만들고 변경을 다시해야했습니다. – Ashish

관련 문제