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

비밀번호

댓글 작성자
 




... 121  122  123  124  125  126  127  128  129  [130]  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
1805정성태11/5/201421878.NET Framework: 476. Visual Studio에서 Mono용 Profiler 개발 [3]파일 다운로드1
1804정성태11/5/201428117.NET Framework: 475. ETW(Event Tracing for Windows)를 C#에서 사용하는 방법 [9]파일 다운로드1
1803정성태11/4/201420219오류 유형: 261. Windows Server Backup 오류 - Error in backup of E:\$Extend\$RmMetadata\$TxfLog
1802정성태11/4/201422207오류 유형: 260. 이벤트 로그 - Windows Error Reporting / AEAPPINVW8
1801정성태11/4/201427443오류 유형: 259. 이벤트 로그 - Windows Error Reporting / IPX Assertion / KorIME.exe [1]
1800정성태11/4/201418218오류 유형: 258. 이벤트 로그 - Starting a SMART disk polling operation in Automatic mode.
1799정성태11/4/201422991오류 유형: 257. 이벤트 로그 - The WMI Performance Adapter service entered the stopped state.
1798정성태11/4/201431737오류 유형: 256. 이벤트 로그 - The WinHTTP Web Proxy Auto-Discovery Service service entered the stopped state. [1]
1797정성태11/4/201417399오류 유형: 255. 이벤트 로그 - The Adobe Flash Player Update Service service entered the stopped state.
1796정성태10/30/201424460개발 환경 구성: 249. Visual Studio 2013에서 Mono 컴파일하는 방법
1795정성태10/29/201426973개발 환경 구성: 248. Lync 2013 서버 설치 방법
1794정성태10/29/201422433개발 환경 구성: 247. "Microsoft Office 365 Enterprise E3" 서비스에 대한 간략 소개
1793정성태10/27/201423045.NET Framework: 474. C# - chromiumembedded 사용 - 두 번째 이야기 [2]파일 다운로드1
1792정성태10/27/201423186.NET Framework: 473. WebClient 객체에 쿠키(Cookie)를 사용하는 방법
1791정성태10/22/201422916VC++: 83. G++ - 템플릿 클래스의 iterator 코드 사용에서 발생하는 컴파일 오류 [5]
1790정성태10/22/201418448오류 유형: 254. NETLOGON Service is paused on [... AD Server...]
1789정성태10/22/201421058오류 유형: 253. 이벤트 로그 - The client-side extension could not remove user policy settings for '...'
1788정성태10/22/201423113VC++: 82. COM 프로그래밍에서 HRESULT 타입의 S_FALSE는 실패일까요? 성공일까요? [2]
1787정성태10/22/201431295오류 유형: 252. COM 개체 등록시 0x8002801C 오류가 발생한다면?
1786정성태10/22/201432638디버깅 기술: 65. 프로세스 비정상 종료 시 "Debug Diagnostic Tool"를 이용해 덤프를 남기는 방법 [3]파일 다운로드1
1785정성태10/22/201421869오류 유형: 251. 이벤트 로그 - Load control template file /_controltemplates/TaxonomyPicker.ascx failed [1]
1784정성태10/22/201429942.NET Framework: 472. C/C++과 C# 사이의 메모리 할당/해제 방법파일 다운로드1
1783정성태10/21/201423348VC++: 81. 프로그래밍에서 borrowing의 개념
1782정성태10/21/201420086오류 유형: 250. 이벤트 로그 - Application Server job failed for service instance Microsoft.Office.Server.Search.Administration.SearchServiceInstance
1781정성태10/21/201420506디버깅 기술: 64. new/delete의 짝이 맞는 경우에도 메모리 누수가 발생한다면?
1780정성태10/15/201424160오류 유형: 249. The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
... 121  122  123  124  125  126  127  128  129  [130]  131  132  133  134  135  ...