Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 4개 있습니다.)

3.1 Managed Card 발행에 대한 Microsoft 예제 실습 (1) - CardWriter


"Windows CardSpace"에서는 2가지 종류의 "카드"가 있습니다. 하나는 "1. 개인 발행 카드에 대한 Microsoft 예제 실습"에서 살펴 본 "개인이 스스로 발행"한 카드이고, 나머지 하나는 "Identity Provider"를 두고 그곳에서 발행이 되는 카드가 있습니다. 개인이 발행하는 카드 예제를 살펴봤으니, 순서상으로 이젠 "Managed Card" 유형에 대한 실습도 해봐야 겠지요. ^^

일단, 실습을 계속하기에 앞서, 여러분들이 다음의 "Introduction to CardSpace" 자료를 다운로드 받으셔서 꼭 읽어보시기를 바라겠습니다. 왜냐하면, "Managed Card"를 설명하면서부터는 "Relying Party"나 "Identity Provider"라는 단어를 사용하게 될 텐데, 이러한 부분에 대한 개략적인 관계는 알고 계셔야 이해하실 때 도움이 될 것이기 때문입니다. (물론, 필요하다고 생각하는 정도만큼은 부분적으로 제가 설명을 하겠지만.)

PDF와 PPT 2007 포맷 각각 다운로드 받을 수 있습니다.

 Introduction to CardSpace
 ; http://cardspace.netfx3.com/files/folders/powerpoint/default.aspx




말씀드린 것처럼 "Managed Card"에서는 자신이 스스로 발행하는 카드가 아니기 때문에 별도로 "Identity Provider(이하, IP라고 부름 - 혼동하지 마십시오.)"가 운영되게 됩니다. 그런데, 이 IP 운영이 생각보다 그리 간단하지 않습니다. 그래서, 예제도 2 단계로 나누어서 살펴볼 텐데요. 첫 번째는 새로운 "Card"를 만들어 내는 예제이고, 두 번째는 그 카드 만드는 예제를 통합해서 실제 IP가 제공해야 할 "Security Token Service"를 구현하는 예제입니다.

지난번 예제와 마찬가지로 이번에도 "Microsoft"에서 제공하는 예제를 대상으로 실습해 볼 텐데요. 먼저, "Managed Card"를 만드는 것에 대한 예제를 살펴보겠습니다. 해당 예제는 다음의 경로에서 다운로드 받을 수 있습니다.

Creating Managed Cards (C#)
; http://cardspace.netfx3.com/files/folders/samples_rc_1/entry5996.aspx

Creating Managed Cards (in VB.NET)
; http://cardspace.netfx3.com/files/folders/samples_rc_1/entry5997.aspx

둘다 동일한 예제인데, 단지 내부에 사용된 언어가 VB.NET 또는 C#인지에 따라서만 달라질 뿐이니 선호하는 언어를 대상으로 다운로드 받으시면 됩니다. 다운로드 받은 "Creating Managed Cards.zip" 파일이 오늘의 실습 대상입니다.



[Creating Managed Cards.zip 실습]

한 가지 미리 말씀드리는데요. 만약 아래의 내용을 읽지 않고 스스로 위의 ZIP 파일에 들어 있는 "Installation-Instructions.doc"을 이용해서 예제를 이해하시겠다고 생각하신 분이라면, "웹 사이트 설정"에 관한 부분은 하지 말라고 말씀드리고 싶군요. 이 예제서는 웹 사이트 접근이 하나도 없습니다.

1. 다운로드 받은 "Creating Managed Cards.zip" 파일의 압축을 "C:\Net30\Managed" 폴더에 풀어 놓습니다. 다음과 같은 구조를 예로 들겠습니다.

예제 디렉터리 구조

2. "C:\Net30\Managed\scripts" 폴더에 있는 "Install-certificates.vbs" 파일을 두 번 눌러서 실행시킵니다. 실행하고 난 후, 약간 시간이 걸리므로 "Certificate Installation Script executed successfully"라는 메시지가 나올 때까지 기다려 주십시오.

3. "C:\Net30\Managed\CardWriter" 폴더에 있는 "CardWriter.sln" 파일을 VS.NET 2005에서 열어서 프로젝트를 빌드합니다. 빌드 후 결과물은 "C:\Net30\Managed\bin"에 놓이게 됩니다.

4. 아래와 같이 실행해서 "C:\Net30\Managed\SampleCards" 폴더에 있는 INI 파일을 CRD 파일로 변경합니다.

C:\Net30\Managed>.\bin\cardwriter.exe .\samplecards\FabrikamUP.ini
Reading card config from
   C:\Net30\Managed\samplecards\FabrikamUP.ini
Card written to
   C:\Net30\Managed\samplecards\FabrikamUP.crd



자, 여기까지가 "Creating Managed Cards (C#)"에서 소개하는 실습의 전부입니다. 음... 좀 썰렁한가요? ^^; 어쨌든, 핵심은 바로 "CardWriter" 프로젝트인데요. INI 파일에 담긴 설정을 이용해서 "Windows CardSpace"에 추가될 수 있는 "CRD" 확장자의 카드 파일을 생성해 내는 것입니다. 지정된 "FabrikamUP.ini"에 대한 대략적인 설정값들은 "C:\Net30\Managed\documents\Creating Managed Cards.doc" 파일 안에 "Understanding the data in an Information Card" 절에서 설명하고 있으므로 꼭 한번 읽어보시기 바랍니다.

참고로, 부가적인 설명을 드리자면. 실제로 위와 같이 CRD 파일을 출력하는 것이 "Identity Provider"의 할 일입니다. IP는 이처럼 CRD 파일을 출력해 주고, 출력된 CRD 파일은 사용자의 컴퓨터에 있는 "Windows CardSpace" 저장소에 저장되게 됩니다. 실제로, 위의 과정을 통해서 만들어진 "C:\Net30\Managed\samplecards\FabrikamUP.crd" 파일을 두 번 클릭하게 되면 다음과 같이 "Windows CardSpace"가 구동되어서 해당 카드를 설치할 거냐고 물어보게 됩니다.

Managed 카드 설치

설치를 하고 나면, 다음과 같은 카드가 생성되어져 있는 것을 볼 수 있는데요.

설치된 Managed 카드

특이한 것은 "Given Name, Last Name..." 등의 필드에 어떠한 정보도 없다는 것입니다. 바로 이점이 "1. 개인 발행 카드에 대한 Microsoft 예제 실습"에서 살펴본 "Personal Card"와의 주된 차이점입니다. "Managed Card"는 그러한 정보를 카드에 직접 담고 있지 않고 "IP"에서 관리하도록 하는 것입니다. 위와 같이 카드가 선택되어 실제로 데이터가 필요한 경우에는 "Window CardSpace"가 해당 카드의 "Security Token Service(이하, STS라고 부름)"로부터 정보를 가져오게 됩니다. 지금은 위의 Card에 대한 STS가 구현되어져 있지 않기 때문에 정보를 가져올 수가 없어서 빈칸이 나오게 되는 것입니다.

좀 더 직접적으로 설명을 드리면, "Managed Card"는 카드 내부에 "해당 카드를 식별하는 고유 ID" 값과 그 ID 값으로 정보를 조회할 수 있는 STS의 주소만이 들어있는 것입니다. 실제로도 이러한 내용들은 "C:\Net30\Managed\samplecards\FabrikamUP.ini" 파일 설정 안에도 들어있습니다.

[Details]
Name=My Card (U/P backed)
ID=http://www.fabrikam.com/card/unpw/randomnnumber123
version=1
image=images\fabrikam.jpg

위의 값이 바로 카드를 식별하는 "고유 ID" 값이고,

[Issuer]
Address=http://www.fabrikam.com:3074/sts
MexAddress=https://www.fabrikam.com:4074/sts/mex
PrivacyPolicy=http://www.fabrikam.com/PrivacyPolicy.xml
Certificate=LOCALMACHINE/MY/www.fabrikam.com

위의 주소가 바로, "고유 ID" 값으로 정보를 조회해 올 수 있는 "Security Token Service"의 URL입니다.



좀 이해가 되셨는지 모르겠습니다. 설명이 좀 빈약한 것 같기도 하고. ^^; 다음 토픽에서는, STS 구현을 실제로 해보는 것으로 좀 더 IP에 대한 이해를 높여 보도록 하겠습니다.



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/25/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 91  92  93  94  95  96  97  98  99  100  101  [102]  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11382정성태12/4/201721895오류 유형: 436. System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired 예외 발생 시 "[Pre-Login] initialization=48; handshake=1944;" 값의 의미
11381정성태11/30/201718292.NET Framework: 702. 한글이 포함된 바이트 배열을 나눈 경우 한글이 깨지지 않도록 다시 조합하는 방법(두 번째 이야기)파일 다운로드1
11380정성태11/30/201718367디버깅 기술: 109. windbg - (x64에서의 인자 값 추적을 이용한) Thread.Abort 시 대상이 되는 스레드를 식별하는 방법
11379정성태11/30/201719101오류 유형: 435. System.Web.HttpException - Session state has created a session id, but cannot save it because the response was already flushed by the application.
11378정성태11/29/201720541.NET Framework: 701. 한글이 포함된 바이트 배열을 나눈 경우 한글이 깨지지 않도록 다시 조합하는 방법 [1]파일 다운로드1
11377정성태11/29/201719836.NET Framework: 700. CommonOpenFileDialog 사용 시 사용자가 선택한 파일 목록을 구하는 방법 [3]파일 다운로드1
11376정성태11/28/201724211VS.NET IDE: 123. Visual Studio 편집기의 \r\n (crlf) 개행을 \n으로 폴더 단위로 설정하는 방법
11375정성태11/28/201718966오류 유형: 434. Visual Studio로 ASP.NET 디버깅 중 System.Web.HttpException - Could not load type 오류
11374정성태11/27/201724069사물인터넷: 14. 라즈베리 파이 - (윈도우의 NT 서비스처럼) 부팅 시 시작하는 프로그램 설정 [1]
11373정성태11/27/201723055오류 유형: 433. Raspberry Pi/Windows 다중 플랫폼 지원 컴파일 관련 오류 기록
11372정성태11/25/201726108사물인터넷: 13. 윈도우즈 사용자를 위한 라즈베리 파이 제로 W 모델을 설정하는 방법 [4]
11371정성태11/25/201719717오류 유형: 432. Hyper-V 가상 스위치 생성 시 Failed to connect Ethernet switch port 0x80070002 오류 발생
11370정성태11/25/201719661오류 유형: 431. Hyper-V의 Virtual Switch 생성 시 "External network" 목록에 특정 네트워크 어댑터 항목이 없는 경우
11369정성태11/25/201721730사물인터넷: 12. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드 및 마우스로 쓰는 방법 (절대 좌표, 상대 좌표, 휠) [1]
11368정성태11/25/201727321.NET Framework: 699. UDP 브로드캐스트 주소 255.255.255.255와 192.168.0.255의 차이점과 이를 고려한 C# UDP 서버/클라이언트 예제 [2]파일 다운로드1
11367정성태11/25/201727435개발 환경 구성: 337. 윈도우 운영체제의 route 명령어 사용법
11366정성태11/25/201719110오류 유형: 430. 이벤트 로그 - Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object.
11365정성태11/25/201721339오류 유형: 429. 이벤트 로그 - User Policy could not be updated successfully
11364정성태11/24/201723269사물인터넷: 11. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 (절대 좌표) [2]
11363정성태11/23/201723165사물인터넷: 10. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 (두 번째 이야기)
11362정성태11/22/201719706오류 유형: 428. 윈도우 업데이트 KB4048953 - 0x800705b4 [2]
11361정성태11/22/201722458오류 유형: 427. 이벤트 로그 - Filter Manager failed to attach to volume '\Device\HarddiskVolume??' 0xC03A001C
11360정성태11/22/201722292오류 유형: 426. 이벤트 로그 - The kernel power manager has initiated a shutdown transition.
11359정성태11/16/201721773오류 유형: 425. 윈도우 10 Version 1709 (OS Build 16299.64) 업그레이드 시 발생한 문제 2가지
11358정성태11/15/201726563사물인터넷: 9. Visual Studio 2017에서 Raspberry Pi C++ 응용 프로그램 제작 [1]
11357정성태11/15/201727063개발 환경 구성: 336. 윈도우 10 Bash 쉘에서 C++ 컴파일하는 방법
... 91  92  93  94  95  96  97  98  99  100  101  [102]  103  104  105  ...