EVC 4.0 프로그래밍의 준비

크리에이티브 커먼즈 라이센스
Creative Commons License

출처: www.propoz.co.kr

안녕하세요. Lucy입니다.

예전에 투데이스피피시에서 간단한 개발 강좌를 부탁하시기에 어떤 것을 가지고 강좌를 할까 고민을 하다가, 그래도 도움이 되는 것을 해보자해서 Windows Mobile 2003과 2003 SE를 위한 공용 텍스트 리더 어플리케이션을 단계별로 만드는 작업을 진행하면서 중요한 부분을 체크해 가는 방식으로 간단히 강좌를 진행하다가, 개인적인 사정으로 중단된 바가 있습니다.

그래서 이곳에서 다시 해당 강좌를 연재하려고 합니다.

먼저 많은 분들이 질문하시는 것들 중에 하나가 PC에서는 Visual Basic, Visual C++, Delphi 등 다양한 개발 도구들이 있는데, Pocket PC에서는 어떤 개발 도구를 쓰느냐 하는 질문입니다.

이 질문에 대한 답변이 첫 회의 주된 내용이 될 듯 하네요.

Pocket PC에서는 다양하다고는 할 수 없지만, 몇몇 개발 도구들이 있습니다. 주로 PC에서 개발해서 Pocket PC에서 실행하는 것이 정석입니다만, 간혹 Pocket C#와 같이 Pocket PC 상에서 직접 작성해서 컴파일하는 도구들도 준비되어 있습니다. 그러나 이런 도구들은 본격적인 개발을 위한 것이라기 보다는 간단한 테스트를 위한 목적으로 많이 사용됩니다.

이 강좌에서는 가장 많이 사용되는 도구인 Microsoft eMbedded Visual C++ 4.0 Service Pack 4 + Microsoft Windows Mobile 2003 SDK + Developer Resources for Windows Mobile 2003 Second Edition을 사용하여 개발을 진행하도록 하겠습니다.

물론 .NET Compact Framework를 이용하여 Managed Code로 작업할 수도 있겠지만, 이 강좌에서는 Native Code로 진행할 예정입니다.

개발을 진행하기 전에 이 강좌를 보시려면 다음의 조건이 어느 정도는 충족되어 있어야 합니다.

1. 개발에 관심이 있어서 관련 서적을 사서 보거나 빌려볼 수 있을 정도의 열정

아래 조건은 필수 조건은 아닙니다만, 없으면 귀찮아지는 것들입니다.

1. 개발에 필요한 수준의 영어 실력 (ㅡ_ㅡ 개발 문서가 전부 영문입니다.)
2. C++에 대한 기본적인 이해 (심층 분석까지 갈 필요는 없습니다.)
3. MFC/API에 대한 기본적인 이해 (심층 분석까지 갈 필요는 없습니다.)
4. Windows 시스템에 대한 기본적인 이해


1. 개발 도구 준비하기

Pocket PC 어플리케이션 개발을 진행하기 위해서 먼저 개발 도구를 준비하셔야 겠지요. Pocket PC는 작지만, 그 위에서 동작하는 어플리케이션을 개발하기 위해서는 많은 준비가 필요합니다.

먼저 PC의 운영 체제는 Windows 2000 Service Pack 2 이상, 혹은 Windows XP Service Pack 1 이상이어야만 합니다. Windows Server 2003에서도 개발을 진행할 수는 있습니다만, 상대적으로 귀찮은 부분이 많이 존재합니다.

그 중에서 권하는 것은 Windows XP Professional Service Pack 2입니다. (Service Pack 2는 굳이 없어도 되겠지만요.)

운영 체제의 요건이 충족된다면 개발 도구를 준비하셔야 합니다.

Pocket PC의 개발 도구는 VS.NET에 연동되어 있는 SDE(Smart Device Extension)를 제외하면 모두 무료로 배포되며, 마이크로소프트의 Pocket PC 개발자 사이트에서 다운로드하실 수 있습니다.

한글 환경에 맞추어 개발하기 위해 필요한 도구들은 다음과 같습니다.

1. Microsoft eMbedded Visual C++ 4.0 (다운로드 페이지) - 영문 버전

CD Key는 다음과 같습니다.

TRT7H-KD36T-FRH8D-6QH8P-VFJHQ

2. Microsft eMbedded Visual C++ 4.0 SP4 (다운로드 페이지) - 영문 버전

3. Microsoft SDK for Windows Mobile 2003-based Pocket PCs (다운로드 페이지) - 영문 버전

4. Developer Resources for Windows Mobile 2003 Second Edition (다운로드 페이지)

5. 한글 Pocket PC 2003 Emulator Image (다운로드)

6. 영문 Pocket PC 2003 SE Emulator Image (다운로드 페이지)

7. 한글 Pocket PC 2003 SE Emulator Image (다운로드)

8. Run-time Type Information Library for the Windows Mobile-based Pocket PC 2003 SDK (다운로드)

위의 항목들을 순서대로 설치하셔야 합니다. 자세한 설치 방법과 설정 방법은 2회에서 다루도록 하겠습니다.

지루한 글 읽어 주셔서 감사합니다.


첫 번째 강좌를 올려드린 이후에 바쁜 일정으로 인해 꽤 오랫동안 강좌를 못한 점 진심으로 사과 드립니다. 이번에는 지난 시간에 이어 설치 부분을 계속 진행하기로 하겠습니다.

개발 도구라는 특성 상 단순히 설치 만으로 설정이 종료되지 않는다는 점 때문에 처음에 설치에 대해 많은 시간을 할애하여 설명하고 있습니다. 하지만 이 강좌의 설정 부분만 잘 숙지하시면 보다 쾌적한 개발 환경을 만끽하실 수 있습니다. 이 강좌의 내용대로 설정을 진행하시면 다음의 환경에 맞는 개발이 가능하게 됩니다.

- 영문 Pocket PC 2003
- 한글 Pocket PC 2003
- 영문 Pocket PC 2003 Second Edition
- 한글 Pocket PC 2003 Second Edition

물론 이를 응용하시면 중국어, 일본어, 독일어 등의 시스템에 맞는 개발도 진행하실 수 있습니다. 전체적으로 귀찮은 설정 작업을 해야한다는 점만 제외하면 어려운 것은 아니므로, 순서대로만 따라하시면 무리없이 설정을 끝내실 수 있습니다.


1. eMbedded Visual C++ 4.0 설치

eMbedded Visual C++ 4.0(이하 eVC4)의 설치는 일반적인 어플리케이션 설치와 같은 방식으로 설치가 진행되며, 마법사 형식(Next 버튼을 눌러서 다음 단계로 진행하는 방식)으로 설치가 진행됩니다.

일반적으로 CD를 가지고 있지 않으신 분들은 Microsoft 사이트에서 다운로드한 압축 자동 해제 파일 형태로 가지고 계실 텐데, 처음 설치 경로는 여러분의 계정 아래의 임시 폴더로 지정되어 있습니다. 반드시 경로를 C:setupevc 등으로 바뀌주시기 바랍니다. 그러지 않으면 설치 파일과 임시 파일들이 한데 섞여 설치가 곤란하게 됩니다. 압축을 다 푸셨으면 C:setupevcsetup.exe 파일을 실행하셔서 설치를 진행하시면 됩니다.

설치 프로그램은 eVC를 설치하기 전에 Platform Builder 4.0을 설치하게 되는데, 아주 특별한 경우를 제외하면 재부팅을 요구하게 됩니다. 이 때 재부팅을 하지 않으면 설치가 더 이상 진행되지 않으므로 반드시 재부팅을 해 주시기 바랍니다. 재부팅 후 설치 프로그램인 setup.exe를 다시 실행하시면 설치가 그 이후부터 계속 진행됩니다.

설치를 진행하다 보면 설치할 항목을 선택하게 되는데, Standard SDK는 설치하실 필요가 없기 때문에 해당 선택 상자를 지워주시면 됩니다.

설치가 끝나면 아까 생성되었던 C:setupevc 폴더는 삭제하셔도 관계 없습니다.


2. eMbedded Visual C++ 4.0 Service Pack 4 설치

eMbedded Visual C++ 4.0 Service Pack 4(이하 SP4)의 설치는 eVC와 비슷하지만 훨씬 간단하게 구성되어 있습니다. 설치 방법은 마찬가지로 압축 해제를 통해 진행하게 되는데, 이 경우에도 가능하면 별도의 폴더를 만들어 설치하도록 하는 것이 좋습니다. 단, SP4는 압축이 풀린 후에 자동으로 설치가 진행되므로 이 점만 유의하시면 됩니다.


3. Microsoft SDK for Windows Mobile 2003-based Pocket PCs 설치

Microsoft SDK for Windows Mobile 2003-based Pocket PCs(이하 PPC2003 SDK)의 설치는 Microsoft Installer(이하 MSI)를 이용하여 설치가 이루어지며, 별도의 설정 변경 없이 설치를 진행하시면 됩니다.


4. Developer Resources for Windows Mobile 2003 Second Edition 설치

Developer Resources for Windows Mobile 2003 Second Edition(이하 DevResSE)의 설치 역시 MSI를 이용한 설치 작업을 진행하시면 됩니다.

설치 후 설정 작업을 해 주어야 하지만, 이 부분은 제일 마지막 단계에서 한꺼번에 설정을 하도록 하겠습니다.


5. 한글 Pocket PC 2003 Emulator Image 외의 에뮬레이터 이미지들 설치

에뮬레이터 이미지들 역시 MSI로 되어 있으므로 일반적인 어플리케이션과 같이 설치를 진행하시면 됩니다.

설치 후 설정 작업을 해 주어야 하지만, 이 부분은 제일 마지막 단계에서 한꺼번에 설정을 하도록 하겠습니다.


6. Run-time Type Information Library for the Windows Mobile-based Pocket PC 2003 SDK 설치

Run-time Type Information Library for the Windows Mobile-based Pocket PC 2003 SDK(이하 RTTI)는 eVC에서 try=catch를 정상적으로 사용할 수 있도록 해 주는 라이브러리입니다.

설치 위치를 C:RTTI로 지정하신 후 압축을 해제하시면 됩니다.


7. 설정하기

지금부터 지루한 설정 작업이 진행됩니다.

7-1. 폴더 지정하기

먼저 eVC를 실행합니다. 시작-프로그램-Microsoft eMbedded Visual C++ 4.0-eMbedded Visual C++ 4.0을 클릭하면 됩니다.

eVC가 실행되면, 먼저 Tools-Options를 선택합니다. Options 대화 상자가 나타나면 Directories 탭을 선택합니다.

Platform은 POCKET PC 2003을 지정하고, CPUs에서 Win32 (WCE emulator)를 지정하고, Show Directories에서 Include files를 선택합니다.

리스트의 제일 아래 빈 박스 부분을 더블 클릭하면 새 폴더를 지정할 수 있는데, ... 버튼을 눌러 폴더 선택 대화 상자를 엽니다. C:PROGRAM FILESDEVELOPER RESOURCES FOR WINDOWS MOBILE 2003 SECOND EDITIONINCPOCKET PC 폴더를 선택하신 후, 해당 라인을 제일 위로 올립니다. 위로 올릴 때는 위쪽 화살표 아이콘을 눌러주면 됩니다.

이제 다시 Show Directories에서 Library files를 선택하고, 마찬가지로 C:PROGRAM FILESDEVELOPER RESOURCES FOR WINDOWS MOBILE 2003 SECOND EDITIONLIBPOCKET PCX86를 추가하고 제일 위로 올립니다.

이제 CPUs를 Win32 (WCE ARMV4)로 변경하신 후 Include files에는 C:PROGRAM FILESDEVELOPER RESOURCES FOR WINDOWS MOBILE 2003 SECOND EDITIONINCPOCKET PC 폴더를 추가하시고, Library files에는 C:PROGRAM FILESDEVELOPER RESOURCES FOR WINDOWS MOBILE 2003 SECOND EDITIONLIBPOCKET PCARM을 추가합니다.

7-2. 에뮬레이터 등록하기

기본적으로 여기까지 진행하시면 영문 Pocket PC 2003 에뮬레이터와 디바이스만 등록이 되어 있는 상태입니다. 한글 Pocket PC 2003과 SE 에뮬레이터를 사용하려면 추가적인 설정이 필요합니다.

eVC가 실행된 상태에서 Tools-Configure Platform Manager를 선택합니다. POCKET PC 2003 아래에 POCKET PC 2003 Device와 Pocket PC 2003 Emulator가 등록된 것을 확인할 수 있습니다. 새로운 디바이스를 등록하기 위해 Add Device 버튼을 클릭합니다. 그러면 New Device 항목이 생성되는데, 이름은 나중에 지정해도 되니 일단 그대로 놔둡니다.

New Device가 선택된 상태에서 Properties 버튼을 클릭하면 디바이스 프로퍼티 대화 상자가 나타나는데, Transport는 TCP/IP Transport for Windows CE를 선택합니다. Startup Server는 Emulator Startup Server를 선택합니다.

Startup Server의 옆에 있는 Configure 버튼을 클릭하면 Emulation Configuration Settings 대화 상자가 나타납니다. Device의 Image에서는 연결할 에뮬레이터 이미지를 지정합니다. 한글판 Pocket PC 2003을 선택하기 위해 KOR POCKET PC 2003을 선택합니다. 이 항목이 없다면 5. 의 에뮬레이터가 정상적으로 설치되지 않은 것이므로 다시 확인을 하셔야 합니다. 나머지 부분은 건드리실 필요가 없으며, OK 버튼을 클릭하면 1차적으로 이미지 지정이 끝납니다.

이미지의 지정이 끝났다면 하단의 Test 버튼을 클릭해 봅니다. 에뮬레이터가 실행되고, 한글판 Pocket PC가 나타난다면 정상적으로 지정이 된 것입니다. OK 버튼을 눌러 설정을 완료합니다. 테스트를 하지 않았다면 테스트를 하지 않았다는 경고 대화 상자가 나타나므로 가급적이면 테스트를 거칠 것을 권합니다.

New Device의 이름을 변경하려면 해당 이름 위에서 클릭을 두 번 해주면 됩니다. 더블 클릭을 하면 설정 대화 상자가 열리므로 더블 클릭을 하면 안 됩니다. 이름은 POCKET PC 2003 Kor Emulator 정도로 바꿔줍니다. Korean Pocket PC 2003 Emulator로 할 수는 있지만, 나중에 에뮬레이터를 선택할 때 정신이 없으므로 가능하면 형태를 기본과 맞춰 주는 것이 좋습니다.

추가적으로 SE의 에뮬레이터도 지정을 해 주면 됩니다. Radio 관련 에뮬레이터는 일반적인 경우 지정할 필요가 없으며, SE는 언어별로 다음의 4가지 이미지만 설정하면 됩니다. (영문/한글을 지정할 경우 4 X 2 = 8개의 이미지를 지정해야 합니다.)

SE Emulator - 240x320 모드
SE Landscape Emulator - 320x240 모드
SE VGA Emulator - 480x640 모드
SE Landscape Emulator - 640x480 모드

7-3. RTTI 설정하기

eVC4를 종료하고, 아까 RTTI를 설치했던 폴더(C:RTTI)로 갑니다. 안에는 Armv4 폴더와 emulator 폴더의 파일들, 그리고 EULA.txt 파일이 있습니다. 해당 파일과 폴더들을 전부 선택한 후 (폴더대로 선택해야 합니다.) C:Program FilesWindows CE Toolswce420POCKET PC 2003Lib 폴더에 복사하거나 옮깁니다.

Lib 폴더 안에도 Armv4 폴더와 emulator 폴더가 있으며, 각각의 파일들이 올바른 폴더 안에 들어가야 합니다.


이로서 개발 도구의 설치가 끝났습니다. 전부 다 마치면 대략 2시간 정도 걸립니다.

감사합니다.

Posted by 느긋나긋

2007/02/04 10:28 2007/02/04 10:28
Response
No Trackback , No Comment
RSS :
http://onurmark.co.kr/tc/rss/response/3

Trackback URL : http://onurmark.co.kr/tc/trackback/3

Leave a comment

AAA를 위한 Radius 서버

크리에이티브 커먼즈 라이센스
Creative Commons License
 1. AAA 개요

AAA 서버란 인증(Authentication), 권한검증(Authorization), 과금(Accounting)을 제공하는 서버를 말한다. 이러한 AAA를 구현하는 프로토콜로는 RADIUS(Remote Authentication Dial-In User Service)와 DIAMETER가 있다. 여기에서는 현재까지 AAA를 위해 대표적으로 사용되어온 RADIUS에 대해 설명하고자 한다.

RADIUS 서버가 사용될 수 있는 실제 망 구성의 간단한 예를 들어 설명을 시작하도록 하겠다.


예1) ADSL 접속.

일반적으로 ADSL은 아래와 같을 것이다.

PC --- ADSL modem --- 전화국의 NAS(Network Access Server) --- 인터넷 --- RADIUS server.


1. PC는 ADSL 접속을 위해 NAS 서버에 접속을 요청할 것이다. 이것은 layer 2에서 PPP 프로토콜에 의한 접속 요청이 된다.


2. 접속을 위한 PPP 핸드쉐이크가 끝난 후 인증을 위한 인증 패킷을 NAS에게 전달할 것이다(참고로, NAS가 받는 패킷은 PPP protocol에 의한 패킷이다).


3. 그러면, NAS는 PPP protocol에 의거해 받은 패킷을 실제 인증 데몬 및 DB를 가지고 있는 RADIUS 서버에게 유효한 사용자인지 물어보아야 한다. 이 때 NAS와 RADIUS 서버 사이에 패킷이 왔다갔다 하는데, 이 패킷은 RADIUS protocol(layer 3임)에 기반한 패킷 포맷을 가지고 왔다갔다 한다. 즉, NAS는 PPP protocol(Layer 2)에 기반한 패킷을 access 개체(PC)로부터 받아 이를 다시 RADIUS protocol(Layer 3)에 기반한 패킷으로 만들어 RADIUS 서버에게 물어보게 된다(결국 NAS는 RADIUS client가 됨).


4. 인증 확인 요청을 받은 RADIUS server는 해당 사용자에 대한 인증 확인 후 accept인지 reject인지의 답변을 NAS에게 주게된다.


5. NAS는 RADIUS 서버에세 받은 응답 패킷을 이용해 다시 PPP쪽에 적당한 응답을 주게 된다.


예2) 무선랜 접속.

일반적으로 무선랜 접속은 아래와 같을 것이다.

PC --- 무선 ------무선 AP ----- 인터넷 --- RADIUS server.

1. PC는 802.11에 기반한 무선 AP로의 접속 및 핸드쉐이크를 실시한다.

2. 그리고 나서 PC는 802.1x에 기반에 인증 데이터을 무선 AP에게 전송한다.

3. 무선 AP는 RADIUS 서버에게 이에 대한 인증 확인을 요청한다.

4. RADIUS 서버로 부터 인증 확인에 대한 응답이 오면 무선 AP는 다시 PC에게 인증 확인해 대한 패킷을

    802.1x에 기반해 전송해 준다.

5. 다음 과정을 실시한다..


다음으로 RADIUS 서버가 왜 필요한가에 대한 설명이다.

RADIUS 서버가 없다고 가정해 보면, 위의 예에서 NAS, 무선 AP 등  access 개체(일반적으로 PC라 생각하면 됨)로부터 연결 요청을 받는 장비는 모두 모든 사용자 정보를 각각 가지고 있어야만 한다. 이것은 간단한 NAS, 무선 AP 장비에  올리기도 어렵거니와 각각의 NAS, 무선 AP가 가지고 있는 사용자 정보도 동기화 시켜야 하는 엄청난 일이 발생할 것이다. 이것 말고도 문제가 더 많을 듯 하다. 그런데, AAA 역할을 해주는 서버를 따로 빼두면, NAS, 무선 AP 등은 AAA 역할의 서버에게만 이러한 질의를 해보면 될 것이다. 관리자 측면에서도 AAA 관련된 것은 모두 해당 RADIUS 서버를 이용하면 되므로 편리할 것이다..


2. RADIUS 개요

RADIUS(Remote Authentication Dial-In User Service) 프로토콜은 다이얼업 네트워킹을 통해 본사 네트워크에 접속할 때, 보안을 위해 사용자 이름과 암호 그리고 가능한한 필요한 보호 조치들을 통해 외부 사용자들을 인증하는 프로토콜이다.


RADIUS 구성 요소
RADIUS 환경은 ▲RADIUS 서버 ▲RADIUS 클라이언트 ▲원격 액세스 클라이언트 ▲RADIUS 프록시 서버로 이뤄져 있다(www.ietf.org/rfc.html의 RFCs 2138과 2139를 참조). RADIUS 서버는 각 네트워크 액세스 서버가 아닌 중앙 원격 액세스 사용자 인증, 계정 데이터를 담당하며, 원격 사용자를 위한 정책을 중앙 관리할 수 있다.


RADIUS의 주요 특징

- Client/Server Model
NAS는 RADIUS의 client로서 동작함. RADIUS server는 사용자의 연결, 인증, 모든 configuration 구성 요청에 대해 응답함.


- Network Security
Client와 Radius server 사이의 transaction은 shared secret을 사용해 인증되어짐. shared secret은 network을 통해 보낼 수 없슴. 추가적으로 사용자 패스워드는 client와 RADIUS server 사이에 encrypt되어 보내짐.


- Flexible Authentication Mechanisms
RADIUS 서버는 사용자 인증을 위한 방법을 제공함. PPP PAP or CHAP, UNIX login, and other authentication mechanisms.


-Extensible Protocol
모든 transaction은 variable length Attribute-Length-Value 3-tuples를 포함한다. 새로운 Attribute 값은 기존 protocol에 영향없이 추가할 수 있다.


3. 표준 문서

RADIUS는 아래의 두 표준문서가 있다.


RFC 2138 - Remote Authentication Dial In User Service(RADIUS)

Authentication와 Authorization을 위한 RADIUS protocol을 설명함. 즉, 아래 패킷 포맷의 Code 4(Accounting-Request), 5(Accounting-Response)를 제외한 코드의 패킷을 설명함. UDP 1812 port를 사용(기존 1645 포트는 "datametrics" 서비스와 충돌).


RFC 2139 – RADIUS Accounting

Network Access Server(NAS)로부터 RADIUS accounting server로의 accounting 정보를 설명함. 즉, 아래 패킷 포맷의 Code 4(Accounting-Request), 5(Accounting-Response)번 코드의 패킷을 설명함. UDP 1813 port를 사용(기존 1646은 "sa- msg-port" 서비스와 충돌)


4. Packet Format

RADIUS client(NAS or 무선 AP)와 RADIUS Server 사이는 정해진 포맷에 의한 패킷을 주고 받아야 한다. 이 포맷을 아래와 같다.



    0                       1                        2                          3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier      |                  Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                                             |
   |                         Authenticator                                 |
   |                                                                             |
   |                                                                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-


Code :

Code field는 one octet이며, RADIUS packet의 타입을 식별한다.


RADIUS Codes(decimal)
        1       Access-Request  - RFC 2138
        2       Access-Accept  - RFC 2138
        3       Access-Reject  - RFC 2138
        4       Accounting-Request  - RFC 2139
        5       Accounting-Response  - RFC 2139
       11       Access-Challenge  - RFC 2138
       12       Status-Server (experimental)
       13       Status-Client (experimental)
      255       Reserved


Identifier : request, replies에 매칭되는 one octet이다.

Length : code, identifier, length, authenticator, attribute field를 포함하는 패킷의 길이.

             mininum length는 20, maximum length는 4096.

Authenticator : 16 octet으로 radius client와 server가 상호 인증하는데 사용하는 정보.

Attribute : RADIUS Attribute는 요청과 응답을 위한 특정 authentication, authorization, information

               and configuration을 포함한다.


4.1 Attributes

RADIUS Attribute는 요청과 응답을 위한 특정 authentication, authorization, information and configuration을 포함한다. 즉, ID, password 등의 정보가 attribute에 해당한다.


Attribute Format


    0                          1                         2

    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

   |     Type      |    Length     |  Value ...

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


      A RADIUS client MAY ignore Attributes with an unknown Type.

          1      User-Name
          2      User-Password
          3      CHAP-Password
          4      NAS-IP-Address
          5      NAS-Port
          6      Service-Type
          7      Framed-Protocol
          8      Framed-IP-Address
          9      Framed-IP-Netmask
         10      Framed-Routing
         11      Filter-Id
         12      Framed-MTU
         13      Framed-Compression
         14      Login-IP-Host
         15      Login-Service
         16      Login-TCP-Port
         17      (unassigned)
         18      Reply-Message
         19      Callback-Number
         20      Callback-Id
         21      (unassigned)
         22      Framed-Route
         23      Framed-IPX-Network
         24      State
         25      Class
         26      Vendor-Specific
         27      Session-Timeout
         28      Idle-Timeout
         29      Termination-Action
         30      Called-Station-Id
         31      Calling-Station-Id
         32      NAS-Identifier
         33      Proxy-State
         34      Login-LAT-Service
         35      Login-LAT-Node
         36      Login-LAT-Group
         37      Framed-AppleTalk-Link
         38      Framed-AppleTalk-Network
         39      Framed-AppleTalk-Zone
         40-59   (reserved for accounting)
         60      CHAP-Challenge
         61      NAS-Port-Type
         62      Port-Limit
         63      Login-LAT-Port

Length : 해당 Type, Length, Value fields를 포함하는 이 attribute의 길이를 가리킴.
Value : Value filed는 attribute에 정보 spec을 포함하며, 사이즈는 zero or more octets.

다음은 4가지의 data type에 대한 설명이다.
 string : 0-253 octets
 address : 32bit value, most significant octet first.
 integer : 32bit value, most significant octet first.
username format :
- monolithic : alphanumeric character로 구성됨.
- simple : printable ASCII characters로 구성됨
- name@fqdn : SMTP address.
- distinguished name : ASN.1 form의 이름.

4.1.1 Vendor-Specific Attribute

RADIUS 프로토콜은 fix 되어 있으므로, RADIUS를 구현하는 벤더에서 새로운 attribute를 넣을려면 이 attribute를 이용하면 된다.


0                  1                    2                 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |  Length       |            Vendor-Id
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Vendor-Id (cont)      | Vendor type  | Vendor length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Attribute-Specific...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+
 
5. Example
 아직까지 설명해온 RADIUS protocol에 의해 주고 받는 패킷의 내용이다.


5.1 User Telnet to Specified Host
 The NAS at 192.168.1.16 sends an Access-Request UDP packet to the RADIUS Server for a user named nemo logging in on port 3.


      Code = 1        (Access-Request)
      ID = 0
      Length = 56
      Request Authenticator = {16 octet random number}
      Attributes:
          User-Name = "nemo"
          User-Password = {16 octets of Password padded at end with nulls,
                                      XORed with MD5(shared secret|Request Authenticator)}
          NAS-IP-Address = 192.168.1.16
          NAS-Port = 3
 
   The RADIUS server authenticates nemo, and sends an Access-Accept UDP
   packet to the NAS telling it to telnet nemo to host 192.168.1.3.
 
      Code = 2        (Access-Accept)
      ID = 0          (same as in Access-Request)
      Length = 38
      Response Authenticator = {16-octet MD-5 checksum of the code (2),
                                              id (0), Length (38), the Request Authenticator from
                                              above, the attributes in this reply, and the shared secret}
      Attributes:
          Service-Type = Login-User
          Login-Service = Telnet
          Login-Host = 192.168.1.3


 5.2.  Framed User Authenticating with CHAP

    The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
   RADIUS Server for a user named flopsy logging in on port 20 with PPP,
   authenticating using CHAP.  The NAS sends along the Service-Type and
   Framed-Protocol attributes as a hint to the RADIUS server that this
   user is looking for PPP, although the NAS is not required to do so.
 
 
      Code = 1        (Access-Request)
      ID = 1
      Length = 71
      Request Authenticator = {16 octet random number also used as CHAP challenge}
      Attributes:
          User-Name = "flopsy"
          CHAP-Password = {1 octet CHAP ID followed by 16 octet
                           CHAP response}
          NAS-IP-Address = 192.168.1.16
          NAS-Port = 20
          Service-Type = Framed-User
          Framed-Protocol = PPP
 
The RADIUS server authenticates flopsy, and sends an Access-Accept UDP packet to the NAS telling it to start PPP service and assign an address for the user out of its dynamic address pool.
 
      Code = 2        (Access-Accept)
      ID = 1          (same as in Access-Request)
      Length = 56
      Response Authenticator = {16-octet MD-5 checksum of the code (2), id (1),

                                              Length (56), the Request Authenticator from above,

                                              the attributes in this reply, and the shared secret}
      Attributes:
          Service-Type = Framed-User
          Framed-Protocol = PPP
          Framed-IP-Address = 255.255.255.254
          Framed-Routing = None
          Framed-Compression = 1      (VJ TCP/IP Header Compression)
          Framed-MTU = 1500
 
5.3  User with Challenge-Response card
    The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
   RADIUS Server for a user named mopsy logging in on port 7.
 
      Code = 1        (Access-Request)
      ID = 2
      Length = 57
      Request Authenticator = {16 octet random number}
      Attributes:
          User-Name = "mopsy"
          User-Password = {16 octets of Password padded at end with nulls, XORed with MD5

                                      (shared secret|Request Authenticator)}
          NAS-IP-Address = 192.168.1.16
          NAS-Port = 7
 
The RADIUS server decides to challenge mopsy, sending back a challenge string and looking

for a response.  The RADIUS server therefore and sends an Access-Challenge UDP packet to the NAS.
 
      Code = 11       (Access-Challenge}
      ID = 2          (same as in Access-Request)
      Length = 78
      Response Authenticator = {16-octet MD-5 checksum of the code (11), id (2),

                                              length (78), the Request Authenticator from above,

                                              the attributes in this reply, and the shared secret}
      Attributes:
          Reply-Message = "Challenge 32769430.  Enter response at prompt."
          State =     {Magic Cookie to be returned along with user's response; in this example

                           8 octets of data}
 
The user enters his response, and the NAS send a new Access-Request with that response, and includes the State Attribute.
 
      Code = 1        (Access-Request)
      ID = 3          (Note that this changes)
      Length = 67
      Request Authenticator = {NEW 16 octet random number}
      Attributes:
          User-Name = "mopsy"
          User-Password = {16 octets of Response padded at end with nulls, XORed with MD5

                                      checksum of shared secret plus above Request Authenticator}
          NAS-IP-Address = 192.168.1.16
          NAS-Port = 7
          State =     {Magic Cookie from Access-Challenge packet, unchanged}
 
The Response was incorrect, so the RADIUS server tells the NAS to reject the login attempt.
 
      Code = 3        (Access-Reject)
      ID = 3          (same as in Access-Request)
      Length = 20
      Response Authenticator = {16-octet MD-5 checksum of the code (3), id (3),

                                              length(20), the Request Authenticator from above,

                                              the attributes in this reply if any, and the shared secret}
      Attributes:
              (none, although a Reply-Message could be sent)

ps> 위의 문서는 syleenet 블로그의 문서를 참조한것입니다.


----------------------------------------------------------------------------------------
출처 URL: http://blog.naver.com/jeeunglee?Redirect=Log&logNo=140010784689

Posted by 느긋나긋

2007/02/04 10:12 2007/02/04 10:12
,
Response
No Trackback , No Comment
RSS :
http://onurmark.co.kr/tc/rss/response/2

Trackback URL : http://onurmark.co.kr/tc/trackback/2

Leave a comment

OpenLDAP의 명령인 ldapsearch 와 ldapadd 사용 예

크리에이티브 커먼즈 라이센스
Creative Commons License

openldap 의 설정 파일(slapd.conf) 의 설정에 다음이 포함되어 있다
suffix          "o=sktelecom"
rootdn          "cn=Manager,o=sktelecom"
rootpw          ananas
LDAP 데이터의 export 명령:

ldapsearch -D "cn=Manager,o=sktelecom" -w "ananas" -b "o=sktelecom" -L
LDAP 데이터의 import 명령:

ldapadd -c -D "cn=Manager,o=sktelecom" -w "ananas" -f import.ldif
1) 입력 파일로 import.ldif 파일을 사용
2) 기존에 존재하는 데이터는 import 되지 않음
3) import.ldif 파일에 존재하지만 LDAP 에 존재하지 않는 데이터는 import 됨
응용 예:

1) 특정 데이터 찾기
   ldapsearch -D "cn=Manager,o=sktelecom" -w "ananas" -b "o=sktelecom" -L "(radiusProfileName=default)"
   i.  radiusProfileName 이 default 로 설정된 데이터를 검색한다
   ii. 사용자 정보와 프로파일 정보가 검색될 것이다

2) 데이터 지우기
   ldapsearch -D "cn=Manager,o=sktelecom" -w "ananas" -b "o=sktelecom" -L "(radiusAPip=192*)" dn

   # 192.168.14.1, clients, sktelecom
   dn: radiusAPip=192.168.14.1, o=clients,o=sktelecom

   # 192.168.14.2, clients, sktelecom
   dn: radiusAPip=192.168.14.2, o=clients,o=sktelecom

   # 192.168.14.3, clients, sktelecom
   dn: radiusAPip=192.168.14.3, o=clients,o=sktelecom

   # 192.168.14.4, clients, sktelecom
   dn: radiusAPip=192.168.14.4, o=clients,o=sktelecom

   ldapdelete -D "cn=Manager,o=sktelecom" -w "ananas" "radiusAPip=192.168.14.1, o=clients,o=sktelecom"
   ldapdelete -D "cn=Manager,o=sktelecom" -w "ananas" "radiusAPip=192.168.14.1, o=clients,o=sktelecom"
   ldapdelete -D "cn=Manager,o=sktelecom" -w "ananas" "radiusAPip=192.168.14.1, o=clients,o=sktelecom"
   ldapdelete -D "cn=Manager,o=sktelecom" -w "ananas" "radiusAPip=192.168.14.1, o=clients,o=sktelecom"

   i.   삭제할 데이터 검색 (dn 만)
   ii.  dn 의 정보를 가지고 데이터 삭제
   iii. 삭제는 주의해서 하여야 함

3) 데이터 고치기
   ldapsearch -D "cn=Manager,o=sktelecom" -w "ananas" -b "o=sktelecom" -L "(radiusUid=updong)" > updong.ldif
   vi updong.ldif
   ldapmodify -D "cn=Manager,o=sktelecom" -w "ananas" -f updong.ldif

   i.   고칠 데이터를 export
   ii.  export 된 파일의 데이터 내용 수정
   iii. 파일의 수정된 내용 적용

Posted by 느긋나긋

2007/02/03 22:16 2007/02/03 22:16
Response
No Trackback , No Comment
RSS :
http://onurmark.co.kr/tc/rss/response/1

Trackback URL : http://onurmark.co.kr/tc/trackback/1

Leave a comment
« Previous : 1 : ... 35 : 36 : 37 : 38 : 39 : Next »

블로그 이미지

네트워크, SSL, VPN, 보안장비, Linux 정보 제공.

- 느긋나긋

Notices

Archives

Calendar

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Site Stats

Total hits:
197173
Today:
149
Yesterday:
151