RESTfull 서비스 소개

웹서비스를 구현하는 방식은 SOAP과 REST 방식이 있습니다. 그중 REST 방식은 간단하게 구현할 수 있어서 많이 사용되는 방식 입니다.

REST와 RESTfull 서비스에 대해서 간단하게 정리를 하였고 JAX-RS를 소개 하고 있습니다.

RESTfull

  • REST (REspresentational State Transfer)
  • URI를 통해 Resource를 요청하고 이를 통해 표현 상태의 변경을 유발하는 통신 Architecture
  • REST 방식의 웹서비스는 세션을 사용하지 않습니다.
  • RESTfull : REST 개변에 충실하게 구현된 웹 Application과 구조
Resource GET
조회
PUT
수정
POST
등록
DELETE
삭제
Collection URI
http://localhost/resources
자료 목록 반환 전체 자료 수정 새로운 자료 생성 전체 자료 삭제
Element URI
http://localhost/resources/123
지정한 자료 반환 지정한 자료 수정/생성 새로운 자료 생성 지정한 자료 삭제
  • JAX-RS
  • JSR-311, Java Annotation API
  • Java API for RESTfull Web Services (2007 ~)
  • 구현체
  • JAX-RS Annotations
  • @Path : 리소스에 대한 접근 경로
  • @GET, @POST, @PUT, @DELETE : Http Request Method
  • @Produces : 반환하는 데이터의 미디어 타입 (XML, JSON)
  • @Consumes : 요청 데이터의 미디어 타입
  • URI matrix parameter
  • Parameter type
  • public static valueOf(String), public static fromString(String)
  • List<T>, Set<T>, SortedSet<T>
  • JAX-RS Sample
@Path("widgets")
@Produces("application/xml")
public class WidgetsResource {
@GET
@Path("offers")
public WidgetList getDiscounted() {
}

//--- Sub-resource Method, 요청을 직접 처리
@GET
@Path("offers/{id}")
@Consumes("application/json")
public Widget findWidget(@QueryParam("id") String id) {
}

@GET
@Produces("text/html")
public String getAsHtml() {
}

//--- Sub-resource Locator, 요청을 처리할 객체를 반환
//--- @GET과 같은 Request Method 지정 어노테이션을 반드시 생략할 것
@Path("offers/{id}")
public WidgetResource findWidget(@QueryParam("id") String id) {
return new WidgetResource(id);
}
}

public class WidgetResource {
public WidgetResource(String id) {
}

@Get
public Widget getDetails() {
}
}
  • Restlet 설정
  • GAE/J(Google App Engine for Java)에 restlet 환경을 설정해 보자.
  • 다운로드 사이트에서 restlet-1.1.10.zip 파일을 다운로드 한다.
  • restlet-1.1.10.zip 파일의 압축을 풀어 lib 디렉토리에 있는 jar 파일을 GAE/J 애플리케이션의 /war/WEB-INF/lib 디렉토리로 복사 한다.
  • 참고 문헌

*** 참고 문헌 ***

Posted by 산사랑

2011/03/26 09:10 2011/03/26 09:10
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/318

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/318

Leave a comment
[로그인][오픈아이디란?]

QRCode 생성 웹 서비스

스마트폰을 사용하면서 QRCode에 관심을 가지게 되었다. 그런데 QRCode를 내 마음대로 만들수 있는 서비스가 없어서 GAE/.J (Google App Engine for Java) 기반으로 작성을 했다.

  • QRCode : 명함(meCard), 전화(tel), 이메일, 핸드폰 등의 양식으로 QRCode 생성
  • QRCode Basic : 자유로운 양식으로 QRCode 생성

생성된 QRCode를 이미지로 저장하려면,
생성된 QRCode에서 마우스 오른쪽 버튼을 누른 후 "이미지를 다른 이름으로 저장"을 선택하기 바란다. (Google Chrome 기준으로 설명함)

Posted by 산사랑

2010/12/23 19:13 2010/12/23 19:13
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/293

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/293

Leave a comment
[로그인][오픈아이디란?]

JBoss jBPM에서 <java> 단계 사용법

오픈소스로 제공되는 JBoss jBPM에서 자동으로 Java Class의 Method를 실행하여 주는 <java> 단계을 정리해 보았습니다.

java

name="이름"
  • 이 단계의 이름, 분기(transition)시 사용 한다.
class="클래스명"
  • 실행할 Java 클래스 지정
  • class 대신 expr="#{변수}" 를 사용하여 실행할 Java 클래스를 지정할 수도 있다.
method="함수명"
  • Java 클래스에서 실행될 함수명(Method)을 지정 한다.
var="반환되는 객체명"
  • 반환되는 객체가 저장될 변수명을 정의 한다.
  • 다른 단계에서 "#{반환되는 객체명}" 으로 지정하여 사용할 수 있다.
g="x,y,width,height"
  • 이 단계를 그림으로 그릴 때 표시되는 위치
<arg>인수</arg>
  • Java Method에 인수로 전달하는 값을 정의
  • 문자열 : <string value="Hi, how are you?"/> -> String
  • 숫자 : <int value="25"/> -> Integer
  • 객체 : <object expr="#{processInfo}"/> -> Object 또는 해당 객체의 타입
<field name="state">변수값</field>
  • 함수에 전달되는 값이 아닌 Java 클래스에 선언된 변수에 전달되는 값을 정의 한다.
  • 변수값은 위 <arg>에 전달되는 값과 동일한 문법을 사용하여 정의 한다.
<transition to="다음 단계 이름"/>
  • Java 클래스의 함수를 실행한 후 분기할 다음 단계를 명시 한다.
  • JBoss jBPM의 java 실행 사례
   //--- processInfo는 Process를 처음 실행할 때 전달된 HashMap
   <java name="step_2_1"
         class="com.groupware.ApproveWorkflowManager" 
         method="documentMove" 
         var="answer"
   	  g="200,300,200,50" >
  	<arg><string value="Drafter document move"/></arg>
  	<arg><object expr="#{processInfo}"/></arg>
  		
  	<arg><object expr="#{processInfo.currentUserSeq}"/></arg>
  	<arg><object expr="#{processInfo.currentBox}"/></arg>
  	<arg><object expr="#{processInfo.currentUserSeq}"/></arg>
  	<arg><string value="Approve/Processing"/></arg>
       <transition to="step_2_2"/>
   </java>

   import com.groupware;
   public class ApproveWorkflowManager {
       public String documentMove(String stepInfo, 
               HashMap<String, Object> processInfo,
               String beforeUser, String beforeBox, 
               String afterUser, String afterBox) {
           processInfo.put("result", "ok");
           return "result";
       }
   }

*** 참고 문헌 ***

Posted by 산사랑

2010/08/27 19:07 2010/08/27 19:07
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/262

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/262

Leave a comment
[로그인][오픈아이디란?]

Android: 갤럭시S의 화면 크기 구하기

갤럭시S에서 Android 앱을 작성할 때 제일 먼저하는 것은 화면 디자인일 것이다. 화면 디자인시에 갤럭시S의 화면 크기를 알고 있으면 도움이 많이 된다.

아래 코드는 갤럭시S에서 화면의 크기를 구하는 방법 이다.

갤럭시S 화면 크기

  • Activity에서 화면 크기 구하는 방법
 StringBuffer buf = null;
 WindowManager wm = null;
 Display display = null;
 DisplayMetrics metrics = null;
    	
 wm = getWindowManager();
 display = wm.getDefaultDisplay();
 metrics = new DisplayMetrics();
 display.getMetrics(metrics);
    	
 buf = new StringBuffer();
 buf.append("Window display id: " + display.getDisplayId() + "\n");
 buf.append("Window orientation: " + display.getOrientation() + "\n");
 buf.append("Window width: " + display.getWidth() + "\n");
 buf.append("Window height: " + display.getHeight() + "\n");
 buf.append("Window pixel format: " + display.getPixelFormat() + "\n");
 buf.append("Window refresh rate: " + display.getRefreshRate() + "\n");
 buf.append("Window width pixels: " + metrics.widthPixels + "\n");
 buf.append("Window height pixels: " + metrics.heightPixels + "\n");
 testMsg.setText(buf.toString());
  • 갤럭시S의 화면 크기
  • 세로 화면 크기
Window display id: 0
Window orientation: 0
Window width: 320
Window height: 533
Window pixel format: 5
Window refresh rate: 68.0
Window width pixels: 320
Window height pixels: 533
  • 가로 화면 크기
Window display id: 0
Window orientation: 1
Window width: 533
Window height: 320
Window pixel format: 5
Window refresh rate: 68.0
Window width pixels: 533
Window height pixels: 320

Posted by 산사랑

2010/08/02 18:20 2010/08/02 18:20
, , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/256

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/256

Leave a comment
[로그인][오픈아이디란?]

Google App Engine 테스트 서버 구축

GAE (Google App Engine) for Java를 위한 로컬용 테스트 서버를 구축하여 보자.

개발 환경에서 GAE 실행

GAE for Java 애플리케이션 개발을 위해서 매번 GAE로 deploy하여 테스트 하는 것은 여러가지 면에서 불편하다. GAE for Java를 위한 개발 환경을 로컬 환경에서 구현해 보자.

Google App Engine의 Google Plugin for Eclipse를 설치하면, Eclipse 설치 디렉토리 아래 plugins/com.google.appengine.eclipse.sdkbundle.[버전] /appengine-java-sdk-[버전]/ 폴더에 appengine-java-sdk가 설치 된다. (예, D:/appl/eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.3_1.3.3.v201004231111/appengine-java-sdk-1.3.3.1) appengine-java-sdk 아래 bin/dev_appserver.cmd 에 애플리케이션의 war 폴더 위치를 전달하여 실행하면 GAE 개발 서비가 실행 된다.

  • 개발 서버 실행 및 종료
  • 아래와 같은 내용으로 runDemo.cmd 파일을 생성 한다.
    appengine-java-sdk 아래의 bin/dev_appserver.cmd를 실행하고
    인수로 실행하고자 하는 애플리케이션의 war 폴더를 전달한다.
set APPENGINE_HOME=D:/appl/eclipse/plugins/com.google.appengine.eclipse.
sdkbundle.1.3.3_1.3.3.v201004231111/appengine-java-sdk-1.3.3.1
set APPLICATION_HOME=C:/www_project/eclipseWorkspace/SmartyAndroid

%APPENGINE_HOME%/bin/dev_appserver.cmd %APPLICATION_HOME%/war
  • runDemo.cmd 파일을 실행 한다.
  • 종료를 원할 경우 Ctrl_C 를 누른다.
  • 브라우저에서 개발 서버 접속
  • 참고 문헌

*참조 : 오픈소스 비즈니스 컨설팅 - GAE

Posted by 산사랑

2010/05/30 22:31 2010/05/30 22:31
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/235

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/235

Leave a comment
[로그인][오픈아이디란?]

64 Bits용 Eclipse 개발 환경 설정

컴퓨터의 메모리가 충분하다면 64 Bits OS를 사용하는 것이 더 효율적이다. 64 Bits OS를 사용할 때 Eclipse의 개발 환경(PHP, Java)을 설정해 보자.


설치전 사전 준비 사항 for 64 bits

이클립스 설치 for 64 bits

  • d:/appl/eclipse/ 폴더에 압축을 풀어 eclipse.exe를 실행하여 사용한다.
  • PHP와 Java 개발 환경 설정
  • "Help -> Install New Software..." 메뉴를 선택 한다.
  • Work with로 Galileo (http://download.eclipse.org/releases/galileo/) 를 선택 한다.
  • "Web, XML, and Java EE Development"에서 아래 항목을 선택 하여 설치 한다.
  • Eclipse Java EE Developer Tools
  • Eclipse Web Developer Tools
  • Eclipse XML Editors and Tools
  • Eclipse XSL Developer Tools
  • JavaScript Developer Tools
  • PHP Development Tools (PDT) SDK Feature

참고 문헌




Posted by 산사랑

2010/04/26 19:55 2010/04/26 19:55
, , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/225

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/225

Leave a comment
[로그인][오픈아이디란?]

Quercus: Java에서 PHP를 같이 사용해 보자

프로그램을 작성하다보면 Java와 PHP를 같이 사용할 경우가 많이 있다. 이 경우 Apache HTTP Server와 Apache Tomcat를 설치하여 보통 처리를 하여 왔는데, Java 기반의 PHP 인터프리터인 Quercus를 사용하면 Java 환경에서 PHP를 같이 사용할 수 있어서 편리 하다. 또한 Quercus를 사용하면 PHP에서 Java 함수를 호출하여 사용할 수 있는 기능도 제공하므로 Java와 PHP의 여러가지 기능을 동시에 사용할 수 있다.

Resin에서 제공하는 Java 기반의 PHP 인터프리터인 Quercus를 사용하여 PHP 5.2.0 개발 환경을 구성해 보자.

  • 환경 정의
  • $JETTY_WEB_ROOT : Web Application 배포된 Root 폴더
  • http://localhost:8080/ : $JETTY_WEB_ROOT 에 브라우저로 접속하는 URL


그림:Quercus 
install 001.png

  • resin-4.0.6.zip의 압축을 풀어 lib 폴더에 있는 다음 파일을 $JETTY_WEB_ROOT/WEB-INF/lib/에 복사 한다.
  • resin.jar, javamail-141.jar
  • $JETTY_WEB_ROOT/WEB-INF/web.xml에서 다음을 추가 한다.
 <servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<init-param>
<param-name>ini-file</param-name>
<param-value>WEB-INF/php.ini</param-value>
</init-param>
<init-param>
<param-name>script-encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.php</welcome-file>
</welcome-file-list>
  • $JETTY_WEB_ROOT/WEB-INF/php.ini 를 생성 한다.
  • 지금은 빈 파일만 만들어 둔다.
  • $JETTY_WEB_ROOT/WEB-INF/phpinfo.php 를 생성 한다.
<?php echo phpinfo()?>

그림:Quercus_install_002.png




Posted by 산사랑

2010/04/19 18:43 2010/04/19 18:43
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/223

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/223

Leave a comment
[로그인][오픈아이디란?]

WAMP 설치 및 구성

평소 오픈소스를 많이 사용하고 있는데 주로 사용하는 환경이 WAMP(Windows, Apache, MySQL, PHP) + Java와 LAMP(Linux(Ubuntu), Apache, MySQL, PHP) + Java 이다. 그런데 이번에 Perl과 Python 기반의 오픈소스를 사용할 일이 있어서 WAMP (Windows, Apache, MySQL, PHP/Perl/Python) + Java 환경을 구성해 보았다.

기존에 많이 사용하던 환경에 대해서는 "오픈소스 비즈니스 컨설팅 - 위키"에 정리를 해 둔 것이 있어서 이 자료를 참조하여 구 노트북에 다시 설치를 하고 Perl과 Python을 Apache HTTP Server와 연계하여 추가 설치를 하였다. Perl은 그나마 예전에 한번 써 본적이 있어서 쉽게 되었는데 Python은 유명한데 비해 자료가 별로 없어서 어려웠다.

아래 정리된 사항은 구 노트북에서 WAMP (Windows, Apache, MySQL, PHP/Perl/Python) + Java 환경을 구성할 때 참조한 자료 또는 추가 정리한 자료 이다. Perl과 Python의 다국어를 위한 UTF-8 환경 구성과 추가 모듈에 대한 사항은 추후 정리할 예정 이다.


WAMP 설치 및 구성

아래에 정리된 사항은 저의 노트북의 Windows 환경에서 문자셋은 UTF-8(다국어 지원)을 기준한 WAMP의 설치 및 구성 과정 이다. 각 소프트웨어별 자세한 설치 사항은 링크된 페이지를 참조하기 바란다.

  • 아래 WAMP 설치 단계를 위해 사용한 Windows 기본 환경
  • Windows XP Professional SP3
  • 노트북 이름 : pnuskgh.jopenbusiness.com (한글이 아닌 영문을 사용함)
  • 사용자 이름 : pnus (한글이 아닌 영문을 사용함)
  • 주의 : 사용자 이름이 한글일 경우 일부 소프트웨어의 경우 문제가 발생할 수 있다. 물론 해당 소프트웨어에 대한 해박한 지식이 있으면 사용자 이름이 한글이라도 해결할 수 있다.
  • 설치 디렉토리
  • JDK : c:/app/jdk160/
  • JRE : c:/app/jre160/
  • JavaDB : c:/app/JavaDB/
  • 주의 : 설치된 Path에 공백이 포함될 경우 일부 소프트웨어의 경우 문제가 발생할 수 있다. 물론 해당 소프트웨어에 대한 해박한 지식이 있으면 사용자 이름이 한글이라도 해결할 수 있다.
  • 설치 디렉토리
  • MySQL : c:/app/MySQL/MySQL510/
  • MySQL Data : c:/app/MySQL/MySQL510Data
  • 설치 디렉토리 : c:/app/MySQLTools/
  • 설치 디렉토리 : c:/app/Apache
  • 설치 디렉토리 : c:/app/Tomcat
  • DocumentRoot를 c:/www 로 변경 한다.
  • 설치 디렉토리 : c:/app/PHP/
  • 설치 디렉토리 : c:/app/Perl/
  • 설치 디렉토리 : c:/app/Python /
*** 참고 문헌 ***
오픈소스 비즈니스 컨설팅 - WAMP
오픈소스 비즈니스 컨설팅 - 문자셋과 인코딩


Posted by 산사랑

2009/04/21 08:01 2009/04/21 08:01
, , , , , , , , , , ,
Response
2 Trackbacks , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/101

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/101

Trackbacks List

  1. 윈도우에서 아파치 웹서버 환경을 한방에 구축해주는 WAMP!

    Tracked from 월풍도원(月風道院) - Delight on the Simple Life 2011/10/16 19:32 Delete

    아파치 웹 서버 환경을 손수 구축하려면 여간 귀찮은 일이 아닙니다. 하지만 WAMP를 이용하면!product윈도우에서 아파치 웹서버 환경을 한방에 구축해주는 WAMP!아파치 설치하고, 데이터베이스 설치하고,PHP 같은 서버 스크립트 언어도 설치한 다음에 연동해 주어야 하죠.어휴.이런 불편함을 해결해 주는 WAMP.덕분에 아주 간편하게 웹 서버 환경을 구축할...

  2. WAMP서버에 Perl, CGI 연동하기

    Tracked from 월풍도원(月風道院) - Delight on the Simple Life 2011/10/19 16:34 Delete

    WAMP서버에 Perl과 CGI를 연동하는 방법입니다.WAMP서버에 Perl, CGI 연동하기우선 Active Perl을 다운받아 설치합니다.아파치 서버의 httpd.conf의 Directory안에 있는 Options에&nbsp;Includes ExecCGI를 추가해 줍니다.DirectoryIndex에 index.cgi index.pl를 추가해 줍니다.cg...

Leave a comment
[로그인][오픈아이디란?]

간편한 SSO 솔루션인 JOSSO

다양한 서비스를 많이 사용하다가 보면 꼭 필요한 것이 보안과 인증 정보를 처리하는 것이다. 여기서 소개하고자 하는 JOSSO (Java Open Single Sign-On)는 Sun에서 오픈소스로 공개한 OpenSSO 처럼 무겁지 않으면서도 Java와 PHP에서 SSO 처리를 지원한다. 많은 기능을 원하지 않고 Java와 PHP 환경에서 인증 처리만 원할 경우 JOSSO를 사용해 볼 것을 권장 한다.

J2EE와 Spring 기반으로 작성된 JOSSO는 Gateway와 Agent로 구성되어 있다. Gateway는 실제로 사용자 정보를 가지고 있으면서 Agent의 요청을 받아 사용자 인증을 처리하고 Agent는 사용자 프로그램이 실행되는 곳에 같이 설치가 되어 Gateway와 통신을 하여 사용자 인증을 처리한다.

아래는 JOSSO가 지원하는 플랫폼으로 Gateway는 Java Platform을 필요로 한다. JOSSO의 지원 플랫폼 표에서 알수 있는 것 처럼 JOSS는 Java, PHP, MS .NET, MS ASP에서의 SSO를 지원 한다.

JOSSO 지원 플랫폼


JOSSO가 동작하는 방식을 간단히 설명을 해 보면
1. 사용자 페이지에 접근
2. JOSSO Agent가 이를 가로채
    - 인증 정보가 있으면 사용자 페이지를 표시 한다.
    - 인증 정보가 없으면 JOSSO Gateway에 전달
3. JOSSO Gateway가 로그인 페이지 표시하여 사용자 인증을 처리
3. 로그인이 완료되면 Gateway가 Agent에게 알림
4. Agent는 사용자/역할 정보를 제공하여 사용자 페이지를 표시


자! 이제 JOSSO를 사용하기 위해서 JOSSO의 Gateway와 Agent를 설치해 보자. 아래 정리된 내용은 "오픈소스 비즈니스 컨설팅 - JOSSO" (위키)에 정리된 사항을 발췌한 것이다. 내용중에서 localhost, $TOMCAT_HOME과 디렉토리 정보 등은 자신의 환경에 맞도록 작업 하여야 한다.


JOSSO 설치 가이드

Windows 환경에서 Apache Tomcat 6.0.16에 JOSSO Gateway(Idp)를 설치 하고, Apache HTTP Server 2.2.8상에서 수행되는 PHP 5.2.5에 JOSSO Agent(SP)를 설치 한다. 사용자 인증을 위해서는 MySQL 5.0.51을 사용한다.

설치전 사전 준비 사항


 JOSSO용 Database 설정

  • MySQL에 JOSSO에서 사용할 Schmea를 등록한다.
  • MySQL Administrator에 root 관리자로 로그인 한다.
  • 좌측 상단 창에서 "Catalogs"를 선택한다.
  • 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
  • "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
  • Schema 생성화면에서 "Schema name"으로 "jossodb"를 입력한다.
DB Schema 등록


  • MySQL에 JOSSO에서 사용할 사용자를 등록한다.
  • 좌측 상단 창에서 "User Administration"을 선택한다.
  • 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
  • "Add new user" 메뉴를 선택하여 사용자를 생성한다.
  • "User Information" 탭에서 "MySQL User"("josso"), "Password", "Confirm Password" 등을 등록한다.
DB 사용자 등록


  • MySQL에 JOSSO에서 사용할 사용자의 권한을 설정한다.
  • "Schema Privileges" 탭에서 사용자가 사용할 Schema("jossodb")를 선택한다.
  • "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
  • "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
권한 부여


  • MySQL Query Browser에 접속한다.
  • 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
  • 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
  • grant all privileges on jossodb.* to josso@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
  • flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
  • select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
접속 정보 추가
  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql
grant all privileges on jossodb.*
to josso@localhost identified by '암호';
flush privileges;
select host, user, password from user order by user, host;
exit


  • MySQL Query Browser를 실행하여 jossodb에 josso 사용자로 로그인 한다.
  • 아래 SQL문을 실행하여 JOSSO에서 사용할 table을 생성 한다.
  • MySQL에서 password는 예약어이므로 password라는 항목명은 passwd로 변경 하여 테이블을 생성 한다.
DROP TABLE IF EXISTS `josso_role`;
CREATE TABLE `josso_role` (
`name` varchar(16) NOT NULL,
`description` varchar(64) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `josso_user`;
CREATE TABLE `josso_user` (
`login` varchar(16) NOT NULL,
`passwd` varchar(20) NOT NULL,
`name` varchar(64) DEFAULT NULL,
`description` varchar(64) DEFAULT NULL,
PRIMARY KEY (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `josso_user_property`;
CREATE TABLE `josso_user_property` (
`login` varchar(16) NOT NULL,
`name` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`login`,`name`),
CONSTRAINT `josso_user_property_ibfk_1`
FOREIGN KEY (`login`) REFERENCES `josso_user` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `josso_user_role`;
CREATE TABLE `josso_user_role` (
`login` varchar(16) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`login`,`name`),
KEY `name` (`name`),
CONSTRAINT `josso_user_role_ibfk_2`
FOREIGN KEY (`login`) REFERENCES `josso_user` (`login`),
CONSTRAINT `josso_user_role_ibfk_1`
FOREIGN KEY (`name`) REFERENCES `josso_role` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • InnoDB를 사용하지 않을 경우에는 "ENGINE=InnoDB DEFAULT CHARSET=utf8;" 대신 "TYPE=MyISAM;"를 사용한다.


JOSSO Gateway 설치

  • 압축을 풀어 d:/josso 폴더에 복사한다.


  • DOS 창에서 JOSSO Agent를 다음과 같이 설치 한다.
  • Windows Vista의 경우, 관리자 권한으로 실행 한다.
cd d:/josso/bin
josso-gsh.bat
gateway install --target "$TOMCAT_HOME" --platform tc60
exit
  • $JAVA_HOME 변수에 공백이 들어 있어 "지정된 경로를 찾을 수 없습니다."라는 오류가 발생할 경우에는, PATH 환경 변수에 $JAVA_HOME/bin 폴더를 추가하고 josso-gsh.bat를 다음과 같이 수정 한다.
"%JAVACMD%" %JAVA_OPTS% -jar "%BOOTJAR%" %ARGS% 를 삭제하고 아래 라인을 추가
java %JAVA_OPTS% -jar "%BOOTJAR%" %ARGS%


  • 설치가 정상적으로 진행이 되면 $TOMCAT_HOME 아래에서 다음 사항을 확인할 수 있다.
  • $TOMCAT_HOME/lib/josso-* 파일 들
  • $TOMCAT_HOME/webapps/josso 폴더


  • 설치가 완료된 후 d:/josso 폴더를 삭제한다.


 JOSSO Gateway 환경 설정

  • MySQL용 JDBC Driver를 설정한다.
  • MySQL JDBC Driver 다운로드 사이트에 접속 한다.
  • "JDBC Driver for MySQL (Connector/J)" 아래에 있는 "Download" 링크를 선택한다.
  • Source and Binaries (zip) 옆에 있는 링크를 선택하여 mysql-connector-java-5.1.7.zip 파일을 다운로드 한다.
  • zip 파일의 압축을 풀어 안에 있는 mysql-connector-java-5.1.7-bin.jar 파일을 $TOMCAT_HOME/webapps/josso/WEB-INF/lib 아래에 복사하고 Tomcat을 재기동 한다.


  • $TOMCAT_HOME/lib/josso-gateway-config.xml 파일에 사용자 정보 저장소로 DB 설정 정보를 사용하도록 수정 한다.
<!-- Identity, Session and Assertion Stores configuration -->
<s:import resource="josso-gateway-db-stores.xml" />
<!--
<s:import resource="josso-gateway-memory-stores.xml" />
<s:import resource="josso-gateway-db-stores.xml" />
<s:import resource="josso-gateway-ldap-stores.xml" />
-->


  • $TOMCAT_HOME/lib/josso-gateway-db-stores.xml 파일에서 DB 정보를 설정 한다.
  • 기존에 있는 id="josso-identity-store" 에 해당하는 것을 삭제하고, 아래 사항을 추가 한다.
  • MySQL에서 password는 예약어이므로 password라는 항목명은 passwd로 변경 하여 테이블을 생성 하였으므로 SQL문도 그에 맞도록 수정 한다.
<db-istore:jdbc-store
id="josso-identity-store"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/jossodb"
connectionName="josso"
connectionPassword="암호"
userQueryString="SELECT LOGIN AS NAME FROM JOSSO_USER WHERE LOGIN = ?"
rolesQueryString="SELECT NAME AS ROLE
FROM JOSSO_USER_ROLE WHERE LOGIN = ?"
credentialsQueryString="SELECT LOGIN AS USERNAME, PASSWD password
FROM JOSSO_USER WHERE LOGIN = ?"
userPropertiesQueryString="SELECT NAME, VALUE
FROM JOSSO_USER_PROPERTY WHERE LOGIN = ?"
resetCredentialDml="UPDATE JOSSO_USER SET PASSWD = ? WHERE LOGIN = ?"
relayCredentialQueryString="SELECT LOGIN FROM JOSSO_USER WHERE #?# = ?"
/>


  • $TOMCAT_HOME/lib/josso-gateway-auth.xml 파일에서 기본 인증 정보를 수정한다.
  • hashAlgorithm, hashEncoding를 삭제하여 암호가 Plan Text로 저장되도록 한다. (현재는 테스트용으로, 향후에는 이를 사용하여 암호가 암호화되어 저장되도록 하여야 한다.)
   <basic-authscheme:basic-auth-scheme
id="josso-basic-authentication"
ignorePasswordCase="false"
ignoreUserCase="false">

<basic-authscheme:credentialStore>
<s:ref bean="josso-identity-store"/>
</basic-authscheme:credentialStore>

<basic-authscheme:credentialStoreKeyAdapter>
<s:ref bean="josso-simple-key-adapter"/>
</basic-authscheme:credentialStoreKeyAdapter>

</basic-authscheme:basic-auth-scheme>



 PHP용 JOSSO Agent 설치

  • 압축을 풀어 d:/josso 폴더에 복사한다.
  • d:/josso/dist/agents/src/josso-php-agent-1.8.0-.zip의 압축을 풀어 d:/josso_php 폴더에 복사한다.



  • PHP에 JOSSO Agent를 설정 한다.
mkdir c:/php/includes
c:/php/includes 아래에 d:/josso_php/josso-php-inc 폴더를 통채로 복사한다.
  • JOSSO Agent 설정 파일은 c:/php/includes/josso-php-inc/josso-cfg.inc 이다.
  • $PHP_HOME에 있는 php.ini 파일에서 다음과 같이 수정 한다.
include_path = ".;c:\php\includes"
auto_prepend_file = "josso-php-inc\josso.php"


  • 테스트를 위해 d/:/josso/dist/samples/apps/josso-partner-php-1.8.0-.zip 파일의 압축을 풀어 index.php 파일을 Apache HTTP Server의 Document Root에 index_josso.php로 이름을 바꾸어 저장 한다.


  • 설치가 완료된 후 d:/josso 폴더와 d:/joss_php 폴더를 삭제하고 Apache HTTP Server를 재기동 한다.


 PHP용 JOSSO Agent 환경 설정

  • JOSSO Agent 설정 파일(c:/php/includes/josso-php-inc/josso-cfg.inc)에서 다음을 수정 한다.
  • JOSSO Gateway의 IP 또는 URL(예, www.josso.com)을 사용하여 설정한다.
  • josso_endpoint는 JOSSO Gateway의 IP를 사용하여 설정한다.
// Josso agent configuration
$josso_gatewayLoginUrl = 'http://gatewayURLorIP:8080/josso/signon/login.do';
$josso_gatewayLogoutUrl = 'http://gatewayURLorIP:8080/josso/signon/logout.do';

// WS client configuration :
$josso_endpoint = 'http://gatewayIP:8080';


 JOSSO 설정 확인

테스트가 끝나면 Document Root에 있는 index_josso.php 파일을 삭제 한다.



이제 JOSSO Gateway와 Agent의 설치가 완료 되었다. JOSSO Agent 중에서 PHP용 Agent가 사용자 프로그램(PHP)에 제공하는 정보(변수)와 기능(함수)를 살펴 보자.

 PHP에 JOSSO 적용

  • JOSSO Agent가 PHP에 제공하는 정보 명세
$josso_agent  : JOSSO Agent
$ssoSessionId : JOSSO Session ID

$user = $josso_agent.getUserInSession() : 세션에 있는 사용자 정보 반환
$roles = $josso_agent->findRolesBySSOSessionId($sessionId) : Roles을 반환
$josso_agent.isUserInRole($rolename) : 해당 Role에 속하는지 여부 반환

$user->getName() : 사용자 명(사용자 아이디)을 반환
$user->getProperties() : 사용자의 모든 Properties를 반환
$user->getProperty('user.name') : 사용자의 해당 Property를 반환


  • JOSSO Agent가 PHP에 제공하는 함수 명세
jossoRequestLogin() : 로그인 페이지로 가고 싶을 때 호출
jossoCreateLoginUrl() : 로그인 URL을 반환
jossoRequestLoginForUrl($currentUrl) : 로그인 페이지 호출
로그인 후 인수로 전달된 페이지 호출

jossoRequestLogout() : 로그아웃을 하고 싶을 때 호출
jossoCreateLogoutUrl() : 로그아웃 URL을 반환
jossoRequestLogoutForUrl($currentUrl) : 로그아웃 페이지 호출
로그아웃 후 인수로 전달된 페이지 호출

*** 참고 문헌 ***


Posted by 산사랑

2009/02/23 00:25 2009/02/23 00:25
, , , , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/84

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/84

Comments List

  1. 박상태 2010/05/03 15:27 # M/D Reply Permalink

    PHP로 사이트가 되있을 경우에 PHP를 설치하는거겠지요?

    1. 산사랑 2010/05/03 23:25 # M/D Permalink

      당근이죠.

Leave a comment
[로그인][오픈아이디란?]

블로그 이미지

개인적인 글쓰기와 오픈소스 비즈니스 컨설팅 관련 글을 정리합니다. consult (골뱅이) jopenbusiness.com

- 산사랑

Archives

12명이 RSS를 구독하고 있습니다.

Site Stats

Total hits:
390553
Today:
97
Yesterday:
271

*** 방문자 통계 ***
0513 : (242)
0514 : (478)
0515 : (513)
0516 : (504)
0517 : (424)
0518 : (402)
0519 : (271)
0520 : (97)
7일간 총 방문자수 : 2834