적용 대상: 
외부 테넌트(자세한 정보)
이 자습서에서는 외부 테넌트 또는 직원 테넌트에 있는 직원의 고객 연결 앱에 사용자를 로그인하는 노드/Express.js 웹앱을 빌드하는 방법을 알아봅니다. 이 자습서에서는 Microsoft Graph API를 호출하기 위한 액세스 토큰을 획득하는 방법도 보여 줍니다.
이 자습서는 3부로 구성된 시리즈의 1부입니다.
이 자습서에서는 다음을 수행합니다.
- Node.js 프로젝트 설정
- 종속성 설치
- 앱 뷰 및 UI 구성 요소 추가
필수 조건
- 새 앱을 Microsoft Entra 관리 센터에 등록하고, 해당 조직 디렉터리의 계정만을 위해 구성합니다.
애플리케이션 등록에서 자세한 내용을 참조하세요. 다음 값을 애플리케이션 개요 페이지에서 기록하여 나중에 사용하십시오.
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
-
웹 플랫폼 구성을 사용하여 다음 리디렉션 URI를 추가합니다. 자세한 내용은 애플리케이션에서 리디렉션 URI를 추가하는 방법을 참조하세요 .
-
리디렉션 URI:
http://localhost:3000/auth/redirect -
프런트채널 로그아웃 URL:
https://localhost:5001/signout-callback-oidc
-
리디렉션 URI:
- 앱 등록에 클라이언트 비밀을 추가합니다. 프로덕션 앱에서는 클라이언트 비밀을 사용하지 마세요. 대신 인증서 또는 페더레이션된 자격 증명을 사용합니다. 자세한 내용은 애플리케이션에 자격 증명 추가를 참조하세요.
- Node.js
- Visual Studio Code 또는 다른 코드 편집기.
Node.js 프로젝트 만들기
컴퓨터에서 선택한 위치에 ciam-sign-in-node-express-web-app과 같은 노드 애플리케이션을 호스트할 폴더를 만듭니다.
터미널에서 디렉터리를 노드 웹앱 폴더로
cd ciam-sign-in-node-express-web-app변경한 다음, 다음 명령을 실행하여 새 Node.js 프로젝트를 만듭니다.npm init -y이
init -y명령은 Node.js 프로젝트에 대한 기본package.json파일을 만듭니다.다음 프로젝트 구조를 달성하기 위해 추가 폴더 및 파일을 만듭니다.
ciam-sign-in-node-express-web-app/ ├── server.js └── app.js └── authConfig.js └── package.json └── .env └── auth/ └── AuthProvider.js └── controller/ └── authController.js └── routes/ └── auth.js └── index.js └── users.js └── views/ └── layouts.hbs └── error.hbs └── id.hbs └── index.hbs └── public/stylesheets/ └── style.css
앱 종속성 설치
필요한 identity 및 Node.js 관련 npm 패키지를 설치하려면 터미널에서 다음 명령어를 실행하세요.
npm install express dotenv hbs express-session axios cookie-parser http-errors morgan @azure/msal-node
앱 UI 구성 요소 빌드
코드 편집기에서 views/index.hbs 파일을 연 다음, 다음 코드를 추가합니다.
<h1>{{title}}</h1> {{#if isAuthenticated }} <p>Hi {{username}}!</p> <a href="/users/id">View ID token claims</a> <br> <a href="/auth/signout">Sign out</a> {{else}} <p>Welcome to {{title}}</p> <a href="/auth/signin">Sign in</a> {{/if}}이 보기에서는 사용자가 인증된 경우, 사용자 이름과
/auth/signout및/users/id엔드포인트로 이동할 수 있는 링크가 표시됩니다. 반면, 인증되지 않은 경우 사용자는 로그인하기 위해/auth/signin엔드포인트를 방문해야 합니다. 이 문서의 뒷부분에서 이러한 엔드포인트에 대한 기본 경로를 정의합니다.코드 편집기에서 views/id.hbs 파일을 연 다음, 다음 코드를 추가합니다.
<h1>Azure AD for customers</h1> <h3>ID Token</h3> <table> <tbody> {{#each idTokenClaims}} <tr> <td>{{@key}}</td> <td>{{this}}</td> </tr> {{/each}} </tbody> </table> <a href="/">Go back</a>이 보기를 사용하여 사용자가 성공적으로 로그인한 후 Microsoft Entra 외부 ID가 이 앱으로 반환되는 ID 토큰 클레임을 표시합니다.
코드 편집기에서 views/error.hbs 파일을 연 다음, 다음 코드를 추가합니다.
<h1>{{message}}</h1> <h2>{{error.status}}</h2> <pre>{{error.stack}}</pre>이 보기를 사용하여 앱이 실행되면 발생하는 오류를 표시합니다.
코드 편집기에서 views/layout.hbs 파일을 연 다음, 다음 코드를 추가합니다.
<!DOCTYPE html> <html> <head> <title>{{title}}</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> {{{content}}} </body> </html>파일이
layout.hbs레이아웃 파일에 있습니다. 애플리케이션 보기 전체에서 필요한 HTML 코드가 포함되어 있습니다.코드 편집기에서 public/stylesheets/style.css 파일을 연 다음 다음 코드를 추가합니다.
body { padding: 50px; font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; } a { color: #00B7FF; }