| Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編) |
目次
索引
![]()
|
| 第5章 Interstageの特徴的な機能 | > 5.4 認証オブジェクトを使用するアプリケーションの作成 |
認証オブジェクトは、CORBAアプリケーションとして提供されるため、認証オブジェクトを使用するアプリケーションは、CORBAサービスを初期化する必要があります。
CORBAサービスの初期化の方法については、“アプリケーション作成ガイド(CORBAサービス編)”の、各プログラミング言語のクライアントアプリケーションの作成についての記述を参照してください。
ネーミングサービスから、ASOのオブジェクトリファレンスを獲得します。各アプリケーションが使用する認証オブジェクトのネーミングサービスへの登録名からASOのオブジェクトリファレンスを獲得します。
認証オブジェクトを使用するアプリケーションは、利用者からの処理要求に対して、利用者の認証のために、認証オブジェクトに認証依頼を行います。
認証オブジェクトによる認証ではユーザ識別子による認証とユーザ名による認証の二種類があります。
ユーザの識別子により、認証オブジェクトに認証依頼を行うには、InfoDirectoryに登録したユーザの識別名(DN)とパスワードを指定する必要があります。このため、認証依頼を行うアプリケーションは、利用者からユーザの識別名を決定する情報とパスワードを入手する必要があります。そして、アプリケーションは、入手した情報からInfoDirectoryに登録したDNとパスワードを構成して、認証オブジェクトに認証依頼を行います。
ユーザのDNには1023バイト以内の文字列が使用可能です。パスワードには128バイト以内の文字列が使用可能です。ただし、パスワードにはASCIIコード系の文字以外は使用できません。
認証依頼は、認証オブジェクトのauth_check()オペレーションにより行います。
ユーザ名により認証のオブジェクトに認証依頼を行うには、認証オブジェクトのauth_check2()オペレーションにより行います。この場合ユーザ名には64バイト以内のASCII文字列が使用可能です。パスワードには64バイト以内の以内のASCII文字列が使用可能です。
日本語を含むユーザ識別名を使用して認証依頼する場合、OD_CODE_SETによりクライアント側で使用するコード系を設定する必要があります。
各言語での使用方法を以下に示します。
以降の使用方法で示すプログラミング例は、簡単化のため、エラー処理は省略しています。認証オブジェクトの各オペレーションの呼び出しはCORBAアプリケーションのオペレーション呼び出しとなるため、復帰値の判定の前に例外処理が必要です。CORBAのクライアントアプリケーションでの例外処理については、“アプリケーション作成ガイド(CORBAサービス編)”のクライアントアプリケーションの例外処理を参照してください。
CORBAサービスのクライアントアプリケーションのプログラミング例を示します。
ユーザDNおよびパスワードをプログラム固定としています。通常は、クライアントプログラム利用者からの入力となります。
ユーザの識別子による認証の場合
C言語
void main(int argc, char **argv) {
CORBA_Environment CoENV;
CORBA_Object CoOBJ; /* ASO の OR */
CORBA_long ret;
CORBA_string userDN;
CORBA_string password;
CORBA_ORB orb;
CORBA_BOA boa;
CosNaming_NamingContext cos_naming;
CosNaming_Name name;
CosNaming_NameComponen name_component;
int current_argc = argc;
/* ユーザ識別名とパスワードの例 */
char *userDNdata = "cn=xyz,ou=dev,o=ABC,c=jp";
char *passworddata = "aaaa";
orb = CORBA_ORB_init(¤t_argc, argv, FJ_OM_ORBid, &CoEnv );
boa = CORBA_ORB_BOA_init(orb, ¤t_argc,argv,CORBA_BOA_OAid, &CoEnv);
cos_naming = CORBA_ORB_resolve_initial_references(orb,
CORBA_ORB_ObjectId_NameService, &CoEnv);
name._length = name._maximum = 1;
name._buffer = &name_component;
name_component.id = "ISTD::ASO";
name_component.kind = "";
CoOBJ = CosNaming_NamingContext_resolve(cos_naming,&name, &CoEnv);
userDN = CORBA_string_alloc(strlen(userDNdata)+1);
password = CORBA_string_alloc(strlen(passworddata)+1);
strcpy(userDN,userDNdata);
strcpy(password,passworddata);
/* 認証オブジェクトへの認証依頼。*/
ret = ISTD_ASO_auth_check( CoOBJ,
userDN,
password,
&CoENV );
CORBA_free(userDN);
CORBA_free(password);
if(ret == ISTD_ASO_OK) {
/* 認証OK時の処理 */
}
else {
/* 認証NG時の処理 */
} |
void main(int argc, char **argv) {
CORBA::ORB_ptr orb;
CORBA::BOA_ptr boa;
CosNaming::Name_ptr name;
CosNaming::NameComponent name_component;
CosNaming::NameComponent_var ncvar;
CORBA::Environment env;
ISTD::ASO_ptr aso_ptr; // ASOのOR
CORBA::ULong ret;
CORBA::Char *userDN;
CORBA::Char *password;
CORBA::Long result;
orb = CORBA::ORB_init( current_argc, argv, FJ_OM_ORBid, env );
boa = orb->BOA_init( current_argc, argv, CORBA_BOA_OAid, env );
CORBA::Object_ptr obj = orb->resolve_initial_references(
CORBA_ORB_ObjectId_NameService, env );
CosNaming::NamingContext_ptr NamingContext_obj=
CosNaming::NamingContext::_narrow( obj );
CORBA::release( obj );
name_component.id = (const char *)"ISTD::ASO";
name_component.kind = (const char *)"";
ncvar = name_component;
name = new CosNaming::Name(1, 1, &ncvar);
obj = NamingContext_obj->resolve( *name, env );
CORBA::release( NamingContext_obj );
aso_ptr = ISTD::ASO::_narrow( obj );
// ユーザ識別名とパスワードの例
char *userDNdata = "cn=xyz,ou=dev,o=ABC,c=jp";
char *passworddata = "aaaa";
userDN = CORBA::string_alloc(strlen(userDNdata)+1);
password = CORBA::string_alloc(strlen(passworddata)+1);
strcpy(userDN,userDNdata);
strcpy(password,passworddata);
// 認証オブジェクトへの認証依頼
result = aso_ptr->auth_check(userDN,
password,
env );
CORBA::string_free( userDN );
CORBA::string_free( password );
// 認証結果の判定
if(result == 0) {
// 認証成功時の処理
}
else {
// 認証失敗時の処理
}
|
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
ARGUMENT-NUMBER IS ARG-C
ARGUMENT-VALUE IS ARG-V
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 COPY BOA IN CORBA REPLACING CORBA-BOA BY BOA.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY A-RESULT.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM.
01 COPY BOOLEAN IN CORBAREPLACING CORBA-BOOLEAN BY RET.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY I.
01 BUFFER USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY BUF-LENGTH.
01 STR-BUF PIC X(30).
01 COPY COSNAMING-NAMINGCONTEXT IN CORBA REPLACING
COSNAMING-NAMINGCONTEXT BY COS-NAMING.
01 COPY COSNAMING-NAME IN CORBA REPLACING COSNAMING-NAME BY NAME.
01 NAME-A USAGE POINTER.
01 COPY COSNAMING-NAMECOMPONENT IN CORBA REPLACING
COSNAMING-NAMECOMPONENT BY NAME-COMPONENT.
01 NAME-COMPONENT-A USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY CURRENT-ARG-C.
01 CURRENT-ARG-V.
02 FILLER OCCURS 6.
03 CURRENT-ARG-V-VALUE USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY TMP-STRING-LEN.
01 TMP-STRING-VA PIC X(50).
01 USERDN-P USAGE IS POINTER.
01 PASSWORD-P USAGE IS POINTER.
PROCEDURE DIVISION.
ACCEPT CURRENT-ARG-C FROM ARG-C.
COMPUTE CURRENT-ARG-C = CURRENT-ARG-C + 1.
PERFORM VARYING ARG-COUNT FROM 1 BY 1 UNTIL ARG-COUNT > CURRENT-ARG-C
IF ARG-COUNT = 1
MOVE APLI-NAME TO TMP-STRING-BUF
ELSE
ACCEPT TMP-STRING-BUF FROM ARG-V
END-IF
MOVE FUNCTION LENG (TMP-STRING-BUF) TO STRING-LENGTH
CALL "CORBA-STRING-SET" USING
CURRENT-ARG-V-VALUE (ARG-COUNT)
STRING-LENGTH
TMP-STRING-BUF
END-PERFORM.
SET CURRENT-ARG-V-VALUE (ARG-COUNT) TO NULL.
MOVE 12 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
FJ-OM-ORB-ID.
CALL "CORBA-ORB-INIT" USING
CURRENT-ARG-C
CURRENT-ARG-V
TEMP-BUF
ENV
ORB.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE 15 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-BOA-OA-ID.
CALL "CORBA-ORB-BOA-INIT" USING
ORB
CURRENT-ARG-C
CURRENT-ARG-V
TEMP-BUF
ENV
BOA.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE FUNCTION LENG ( CORBA-ORB-OBJECTID-NAMESERVICE ) TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-ORB-OBJECTID-NAMESERVICE.
CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING
ORB
TEMP-BUF
ENV
COS-NAMING.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH.
MOVE "ISTD::ASO" TO STR-BUF.
CALL "CORBA-STRING-SET" USING
IDL-ID OF NAME-COMPONENT
STRING-LENGTH
STR-BUF.
MOVE " " TO STR-BUF.
CALL "CORBA-STRING-SET" USING
KIND OF NAME-COMPONENT
STRING-LENGTH
STR-BUF.
MOVE 1 TO SEQ-LENGTH OF NAME.
MOVE 1 TO SEQ-MAXIMUM OF NAME.
MOVE 1 TO NUM.
CALL "CORBA-SEQUENCE-COSNAMING-NAMECOMPONENT-ALLOCBUF" USING
SEQ-MAXIMUM OF NAME
SEQ-BUFFER OF NAME.
MOVE FUNCTION ADDR ( NAME ) TO NAME-A.
MOVE FUNCTION ADDR ( NAME-COMPONENT ) TO NAME-COMPONENT-A.
CALL "CORBA-SEQUENCE-ELEMENT-SET" USING
NAME-A
NUM
NAME-COMPONENT-A.
CALL "COSNAMING-NAMINGCONTEXT-RESOLVE" USING
COS-NAMING
NAME
ENV
OBJ.
*--- ユーザ識別名とパスワードの例
MOVE "cn=xyz,ou=dev,o=ABC,c=jp" TO TMP-STRING-VA.
MOVE FUNCTION LENG(TMP-STRING-VA) TO TMP-STRING-LEN.
CALL "CORBA-STRING-SET" USING
USERDN-P
TMP-STRING-LEN
TMP-STRING-VA.
MOVE "aaaa" TO TMP-STRING-VA.
MOVE FUNCTION LENG(TMP-STRING-VA) TO TMP-STRING-LEN.
CALL "CORBA-STRING-SET" USING
PASSWORD-P
TMP-STRING-LEN
TMP-STRING-VA.
*--- 認証オブジェクトへの認証依頼
CALL "ISTD-ASO-AUTH-CHECK" USING
OBJ
USERDN-P
PASSWORD-P
ENV
A-RESULT.
CALL "CORBA-FREE" USING USERDN-P.
CALL "CORBA-FREE" USING PASSWORD-P.
IF A-RESULT = 0 THEN
*--- 認証成功時の処理
ELSE
*--- 認証失敗時の処理
END-IF. |
org.omg.CORBA.ORB Orb; // ORB用オブジェクトリファレンス
ISTD.ASO aso;
int res;
// ユーザ識別名とパスワードの例
String userDN = new String("cn=xyz,ou=dev,o=ABC,c=jp");
String password = new String("aaaa");
Orb = CORBA.ORB.init( arg, "FJ OM ORBid" );
CORBA.String NSname= new CORBA.String(Orb.ObjectId_NameService);
CORBA.Object _tmpObj = Orb.resolve_initial_references(NSname);
Cos = CosNaming.NamingContext_var.narrow(_tmpObj);
CosNaming.Istring NCid = new CosNaming.Istring("ISTD::ASO");
CosNaming.Istring NCkind = new CosNaming.Istring("");
CosNaming.Name NCo = new CosNaming.Name(2);
NCo.value[0] = new CosNaming.NameComponent( NCid, NCkind );
Obj = Cos.resolve( NCo );
aso = ISTD.ASO_var.narrow(Obj);
// 認証オブジェクトへの認証依頼
try {
res = aso.auth_check(userDN,password);
}catch( Exception e ) {
System.out.println("auth_check error.");
return;
}
if(res == 0) {
// 認証成功時の処理
}
else {
// 認証失敗時の処理
} |
void main(int argc, char **argv) {
CORBA_Environment CoENV;
CORBA_Object CoOBJ; /* ASO の OR */
CORBA_long ret;
CORBA_ORB orb;
CORBA_BOA boa;
CosNaming_NamingContext cos_naming;
CosNaming_Name name;
CosNaming_NameComponent name_component;
int current_argc = argc;
CORBA_long ret;
CORBA_string username;
CORBA_string password;
CORBA_string userbaseDN;
orb = CORBA_ORB_init(¤t_argc, argv, FJ_OM_ORBid, &CoEnv );
boa = CORBA_ORB_BOA_init(orb, ¤t_argc,argv,CORBA_BOA_OAid, &CoEnv);
cos_naming = CORBA_ORB_resolve_initial_references(orb,
CORBA_ORB_ObjectId_NameService, &CoEnv);
name._length = name._maximum = 1;
name._buffer = &name_component;
name_component.id = "ISTD::ASO";
name_component.kind = "";
CoOBJ = CosNaming_NamingContext_resolve(cos_naming,&name, &CoEnv);
username = CORBA_string_alloc(strlen(usernamedata)+1);
password = CORBA_string_alloc(strlen(passworddata)+1);
userbaseDN = CORBA_string_alloc(strlen(userbaseDNdata)+1);
strcpy(username,usernamedata);
strcpy(password,passworddata);
strcpy(userbaseDN,userbaseDNdata);
/* 認証オブジェクトへの認証依頼。*/
ret = ISTD_ASO_auth_check2( CoOBJ,
username,
password,
userbaseDN,
&CoENV );
CORBA_free(username);
CORBA_free(password);
CORBA_free(userbaseDN);
if(ret == ISTD_ASO_OK) {
/* 認証OK時の処理 */
}
else {
/* 認証NG時の処理 */
} |
void main( int argc, char *argv[] ){
CORBA::ORB_ptr orb;
CORBA::BOA_ptr boa;
CosNaming::Name_ptr name;
CosNaming::NameComponentname_component;
CosNaming::NameComponent_var ncvar;
CORBA::Environment env;
ISTD::ASO_ptr aso_ptr; // ASOのOR
CORBA::ULong ret;
CORBA::Char *username;
CORBA::Char *password;
CORBA::Char *userbaseDN;
CORBA::Long result;
// ユーザ名とパスワードの例
char *usernamedata = "taro";
char *passworddata = "aaaa";
char *userbaseDNdata = "ou=dev,o=ABC,c=jp";
orb = CORBA::ORB_init( current_argc, argv, FJ_OM_ORBid, env );
boa = orb->BOA_init( current_argc, argv, CORBA_BOA_OAid, env );
CORBA::Object_ptr obj = orb->resolve_initial_references(
CORBA_ORB_ObjectId_NameService, env );
CosNaming::NamingContext_ptr NamingContext_obj=
CosNaming::NamingContext::_narrow( obj );
CORBA::release( obj );
name_component.id = (const char *)"ISTD::ASO";
name_component.kind = (const char *)"";
ncvar = name_component;
name = new CosNaming::Name(1, 1, &ncvar);
obj = NamingContext_obj->resolve( *name, env );
CORBA::release( NamingContext_obj );
aso_ptr = ISTD::ASO::_narrow( obj );
username = CORBA::string_alloc(strlen(usernamedata)+1);
password = CORBA::string_alloc(strlen(passworddata)+1);
userbaseDN = CORBA::string_alloc(strlen(userbaseDNdata)+1);
strcpy(username,usernamedata);
strcpy(password,passworddata);
strcpy(password,userbaseDNdata);
// 認証オブジェクトへの認証依頼
result = aso_ptr->auth_check2(username,
password,
userbaseDN, env );
CORBA::string_free( username );
CORBA::string_free( password );
CORBA::string_free( userbaseDN );
// 認証結果の判定
if(result == 0) {
// 認証成功時の処理
}
else {
// 認証失敗時の処理
}
|
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
ARGUMENT-NUMBER IS ARG-C
ARGUMENT-VALUE IS ARG-V
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 COPY BOA IN CORBA REPLACING CORBA-BOA BY BOA.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY A-RESULT.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM.
01 COPY BOOLEAN IN CORBAREPLACING CORBA-BOOLEAN BY RET.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY I.
01 BUFFER USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY BUF-LENGTH.
01 STR-BUF PIC X(30).
01 COPY COSNAMING-NAMINGCONTEXT IN CORBA REPLACING
COSNAMING-NAMINGCONTEXT BY COS-NAMING.
01 COPY COSNAMING-NAME IN CORBA REPLACING COSNAMING-NAME BY NAME.
01 NAME-A USAGE POINTER.
01 COPY COSNAMING-NAMECOMPONENT IN CORBA REPLACING
COSNAMING-NAMECOMPONENT BY NAME-COMPONENT.
01 NAME-COMPONENT-A USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY CURRENT-ARG-C.
01 CURRENT-ARG-V.
02 FILLER OCCURS 6.
03 CURRENT-ARG-V-VALUE USAGE POINTER.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY TMP-STRING-LEN.
01 TMP-STRING-VA PIC X(50).
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY TMP-STRING-LEN.
01 USERNAME-P USAGE IS POINTER.
01 PASSWORD-P USAGE IS POINTER.
01 USERBASEDN-P USAGE IS POINTER.
PROCEDURE DIVISION.
ACCEPT CURRENT-ARG-C FROM ARG-C.
COMPUTE CURRENT-ARG-C = CURRENT-ARG-C + 1.
PERFORM VARYING ARG-COUNT FROM 1 BY 1 UNTIL ARG-COUNT > CURRENT-ARG-C
IF ARG-COUNT = 1
MOVE APLI-NAME TO TMP-STRING-BUF
ELSE
ACCEPT TMP-STRING-BUF FROM ARG-V
END-IF
MOVE FUNCTION LENG (TMP-STRING-BUF) TO STRING-LENGTH
CALL "CORBA-STRING-SET" USING
CURRENT-ARG-V-VALUE (ARG-COUNT)
STRING-LENGTH
TMP-STRING-BUF
END-PERFORM.
SET CURRENT-ARG-V-VALUE (ARG-COUNT) TO NULL.
MOVE 12 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
FJ-OM-ORB-ID.
CALL "CORBA-ORB-INIT" USING
CURRENT-ARG-C
CURRENT-ARG-V
TEMP-BUF
ENV
ORB.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE 15 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-BOA-OA-ID.
CALL "CORBA-ORB-BOA-INIT" USING
ORB
CURRENT-ARG-C
CURRENT-ARG-V
TEMP-BUF
ENV
BOA.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE FUNCTION LENG ( CORBA-ORB-OBJECTID-NAMESERVICE ) TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-ORB-OBJECTID-NAMESERVICE.
CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING
ORB
TEMP-BUF
ENV
COS-NAMING.
CALL "CORBA-FREE" USING TEMP-BUF.
MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH.
MOVE "ISTD::ASO" TO STR-BUF.
CALL "CORBA-STRING-SET" USING
IDL-ID OF NAME-COMPONENT
STRING-LENGTH
STR-BUF.
MOVE " " TO STR-BUF.
CALL "CORBA-STRING-SET" USING
KIND OF NAME-COMPONENT
STRING-LENGTH
STR-BUF.
MOVE 1 TO SEQ-LENGTH OF NAME.
MOVE 1 TO SEQ-MAXIMUM OF NAME.
MOVE 1 TO NUM.
CALL "CORBA-SEQUENCE-COSNAMING-NAMECOMPONENT-ALLOCBUF" USING
SEQ-MAXIMUM OF NAME
SEQ-BUFFER OF NAME.
MOVE FUNCTION ADDR ( NAME ) TO NAME-A.
MOVE FUNCTION ADDR ( NAME-COMPONENT ) TO NAME-COMPONENT-A.
CALL "CORBA-SEQUENCE-ELEMENT-SET" USING
NAME-A
NUM
NAME-COMPONENT-A.
CALL "COSNAMING-NAMINGCONTEXT-RESOLVE" USING
COS-NAMING
NAME
ENV
OBJ.
*--- ユーザ名とパスワードの例
MOVE "taro" TO TMP-STRING-VA.
MOVE FUNCTION LENG(TMP-STRING-VA) TO TMP-STRING-LEN.
CALL "CORBA-STRING-SET" USING
USERNAME-P
TMP-STRING-LEN
TMP-STRING-VA.
MOVE "aaaa" TO TMP-STRING-VA.
MOVE FUNCTION LENG(TMP-STRING-VA) TO TMP-STRING-LEN.
CALL "CORBA-STRING-SET" USING
PASSWORD-P
TMP-STRING-LEN
TMP-STRING-VA.
MOVE "ou=dev,o=ABC,c=jp" TO TMP-STRING-VA.
MOVE FUNCTION LENG(TMP-STRING-VA) TO TMP-STRING-LEN.
CALL "CORBA-STRING-SET" USING
USERBASEDN-P
TMP-STRING-LEN
TMP-STRING-VA.
*--- 認証オブジェクトへの認証依頼
CALL "ISTD-ASO-AUTH-CHECK2" USING
OBJ
USERNAME-P
PASSWORD-P
USERBASEDN-P
ENV
A-RESULT.
CALL "CORBA-FREE" USING USERNAME-P.
CALL "CORBA-FREE" USING PASSWORD-P.
CALL "CORBA-FREE" USING USERBASEDN-P.
IF A-RESULT = 0 THEN
*--- 認証成功時の処理
ELSE
*--- 認証失敗時の処理
END-IF. |
org.omg.CORBA.ORB Orb; // ORB用オブジェクトリファレンス
ISTD.ASO aso;
int res;
Orb = CORBA.ORB.init( arg, "FJ OM ORBid" );
CORBA.String NSname= new CORBA.String(Orb.ObjectId_NameService);
CORBA.Object _tmpObj = Orb.resolve_initial_references(NSname);
Cos = CosNaming.NamingContext_var.narrow(_tmpObj);
CosNaming.Istring NCid = new CosNaming.Istring("ISTD::ASO");
CosNaming.Istring NCkind = new CosNaming.Istring("");
CosNaming.Name NCo = new CosNaming.Name(2);
NCo.value[0] = new CosNaming.NameComponent( NCid, NCkind );
Obj = Cos.resolve( NCo );
aso = ISTD.ASO_var.narrow(Obj);
// ユーザ名とパスワードの例
String username = new String("taro");
String password = new String("aaaa");
String userbaseDN = new String("ou=dev,o=ABC,c=jp");
// 認証オブジェクトへの認証依頼
try {
res = aso.auth_check2(username,password,userbaseDN);
}catch( Exception e ) {
System.out.println("auth_check2 error.");
return;
}
if(res == 0) {
// 認証成功時の処理
}
else {
// 認証失敗時の処理
} |
目次
索引
![]()
|