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)
11635정성태8/1/201818741오류 유형: 472. C# 컴파일 오류 - Your project is not referencing the ".NETFramework,Version=v3.5" framework.
11634정성태8/1/201821700.NET Framework: 790. .NET Thread 상태가 Cooperative일 때 GC hang 현상 재현 방법파일 다운로드1
11633정성태7/29/201825659Graphics: 15. Unity - shader의 World matrix(unity_ObjectToWorld)를 수작업으로 구성 [2]파일 다운로드1
11632정성태7/28/201827963Graphics: 14. C# - Unity에서 캐릭터가 바라보는 방향을 기준으로 카메라의 위치 이동 및 회전하는 방법
11631정성태7/27/201829917Graphics: 13. Unity로 실습하는 Shader (9) - 투명 배경이 있는 텍스처 입히기 [1]
11630정성태7/27/201825041개발 환경 구성: 391. (GitHub 등과 직접 연동해) 소스 코드 디버깅을 쉽게 해 주는 SourceLink [3]
11629정성태7/26/201823842.NET Framework: 789. C# 컴파일 옵션 - Check for arithmetic overflow/underflow [2]
11628정성태7/25/201825669Graphics: 12. Unity로 실습하는 Shader (8) - 다중 패스(Multi-Pass Shader)
11627정성태7/25/201820076개발 환경 구성: 390. C# - 컴파일러 옵션 OSS signing / Public Signing
11626정성태7/25/201818433오류 유형: 471. .C++ 함수를 const로 바꾼 경우 C2440 컴파일 오류가 발생한다면?
11625정성태7/24/201817673Math: 49. GeoGebra 기하 (25) - 타원의 중심점 찾기파일 다운로드1
11624정성태7/24/201822116개발 환경 구성: 389. C# - 재현 가능한 빌드(reproducible builds) == Deterministic builds [4]
11623정성태7/24/201821489Math: 48. C# - 가우시안 함수의 이산형(discrete) 커널 값 생성파일 다운로드1
11622정성태7/23/201821627개발 환경 구성: 388. Windows 환경에서 Octave 패키지 설치하는 방법
11621정성태7/23/201819234VC++: 127. 멤버 함수에 대한 포인터를 외부에서 호출하는 방법파일 다운로드1
11620정성태7/22/201822501Graphics: 11. Unity로 실습하는 Shader (7) - Blur (평균값, 가우스, 중간값) 필터 [1]파일 다운로드1
11619정성태7/21/201821540Graphics: 10. Unity로 실습하는 Shader (6) - Mosaic Shading
11618정성태7/20/201818630개발 환경 구성: 387. 삼성 오디세이(Odyssey) 노트북의 운영체제를 새로 설치하는 방법
11617정성태7/20/201819403Team Foundation Server: 50. TFS 소스 코드 관리 기능 (5) - "Rollback", "Rollback Entire Changeset"
11616정성태7/17/201818767Graphics: 9. Unity Shader - 전역 변수의 초기화
11615정성태7/17/201823107.NET Framework: 788. RawInput을 이용한 키보드/마우스 입력 모니터링파일 다운로드1
11614정성태7/17/201825346Graphics: 8. Unity Shader - Texture의 UV 좌표에 대응하는 Pixel 좌표
11613정성태7/16/201821642Graphics: 7. Unity로 실습하는 Shader (5) - Flat Shading
11612정성태7/16/201820601Windows: 148. Windows - Raw Input의 Top level collection 의미
11611정성태7/15/201820831Graphics: 6. Unity로 실습하는 Shader (4) - 퐁 셰이딩(phong shading)
11610정성태7/15/201817391Graphics: 5. Unity로 실습하는 Shader (3) - 고로 셰이딩(gouraud shading) + 퐁 모델(Phong model) + Texture
... 91  [92]  93  94  95  96  97  98  99  100  101  102  103  104  105  ...