最近のアクセス:
GAM のカスタム認証タイプ

Web セッションでログインに関連するデータを保存して維持し、アプリケーションのほかのオブジェクトから必要に応じてこのデータを読み取る場合、外部 ID プロバイダーとして SOAP Web サービスを使用しても役に立ちません。
認証のために実装された .dll ファイルに、ユーザー認証のためのメソッドが 1 つ、アカウントの残高を表示するためのメソッドが 1 つあるとします。login メソッドで Web セッションを保存し、"ViewUserBalanceAccount" の実行時に読み取る必要があります。Web セッションは、Web サービスに保存した場合は維持されないので、この場合、Web サービスは役に立ちません。
この場合、外部 Web サービス認証タイプではなく、GAM の認証タイプ: カスタムを使用し、外部プログラムを、SOAP サービスではなく、GeneXus Access Manager を使用するアプリケーションと同じプラットフォームのプログラムにできます (GeneXus またはそれ以外を使用して開発した .dll、.rb、または .class を使用できます)。
 
 GAM の認証タイプ: カスタムを使用した場合、プログラムの入力パラメーターと出力パラメーターの json 形式に応じて、次の 2 バージョンの外部プログラムがサポートされています:
これらのリンクから、必要なデータタイプを含む XPZ をダウンロードすることができます。

GAM の認証タイプ: カスタムを使用した認証

1.外部認証プログラム (.rb、.class、.dll) が満たしている必要がある条件

  • 入力パラメーター: 文字列
    json 形式の文字列であり、その構造が GAMWSLoginInSDT 構造化データタイプと同じである必要があります。
  • 出力パラメーター: 文字列
    json 形式の文字列であり、その構造が GAMWSLoginOutSDT 構造化データタイプと同じである必要があります。
これらのデータタイプの詳細については、「外部認証タイプ: バージョン 1.0」または「 外部認証タイプ: バージョン 2.0」を、参照してください。

外部認証プログラム バージョン 1.0 の例

ルール:
Parm(in:&StrInput, out:&StrOutput); //&StrInput と &StrOutput は varchar(256)
ソースコード:
&Key = '03E1E1AAA5BCA19FBA8C42058B4ABF28'
&GAMWSLoginIn.FromJson(&StrInput) // &GAMWSLoginIn は &GAMWSLoginInSDT データタイプ
//パラメーターの復号化
&UserLogin      = Decrypt64( &GAMWSLoginIn.GAMUsrLogin, &Key )
&UserPassword   = Decrypt64( &GAMWSLoginIn.GAMUsrPwd, &Key )
&GAMWSLoginOut             = New GAMWSLoginOutSDT() //&GAMWSLoginOut は &GAMWSLoginOutSDT データタイプ
&GAMWSLoginOut.WSVersion   = GAMAutExtWebServiceVersions.GAM10
&GAMWSLoginOut.User        = New GAMWSLoginOutUserSDT()
Do 'ValidUser'
&StrOutput = &GAMWSLoginOut.ToJson()

Sub 'ValidUser'
    If &UserLogin = !"user"
       If &UserPassword = !"password"
          &GAMWSLoginOut.WSStatus = 1
          &GAMWSLoginOut.User.Code         = !"code"
          &GAMWSLoginOut.User.FirstName    = !"FirstName"
          &GAMWSLoginOut.User.LastName     = !"LastName"
          &GAMWSLoginOut.User.EMail        = !"name2@domain.com"    
          Do 'GetRoles' //オプション
       Else
          &GAMWSLoginOut.WSStatus = 3
       EndIf
    Else
       &GAMWSLoginOut.WSStatus = 2
    EndIf
EndSub

Sub 'GetRoles' 
    &GAMWSLoginOutUserRol = New()
    &GAMWSLoginOutUserRol.RoleCode = "role_1"
    &GAMWSLoginOut.User.Roles.Add(&GAMWSLoginOutUserRol) 
    &GAMWSLoginOutUserRol = New()
    &GAMWSLoginOutUserRol.RoleCode = "role_2"
    &GAMWSLoginOut.User.Roles.Add(&GAMWSLoginOutUserRol
EndSub

2.GAM Backoffice を使用して新しい「認証タイプ」を定義

"カスタム認証" タイプである必要があります。
イメージ:21760.png
Java の例

イメージ:23703.png
.Net の例
図 1.
図 1 に示すように、外部認証プログラムのデータを指定する必要があります。
Function: 外部プログラムを認証とオーソライズの両方に使用するかどうかを指定します。 [ Authentication and Roles ] を指定する場合は、「外部認証プログラムによるロールの管理」を参照してください。
JSON version: 外部プログラムのバージョン (1.0 または 2.0) を指定します。
Private encryption key: GeneXus 外部認証プログラムを使用する場合は、暗号化キーが便利です。Encrypt64 関数を使用して、ユーザー名とパスワードがプログラムに渡されるときに暗号化されます。ここには、外部プログラムで、ユーザーとパスワードの復号化に使用する暗号化キーを設定します。
File name: 外部プログラムに対応するファイルの名前を指定します (dll/jar/class/rb)。Java の場合はオプションです。
Package: ここには、Java モデルの場合は [ Java Package Name ] プロパティと同じ値、.NET モデルの場合は [ Net Application namespace ] プロパティの値、Ruby の場合はコードの名前空間を指定します。 このプロパティはオプションであり、外部プログラムそのパッケージがあるかどうかによって異なります。
Class name: このフィールドは必須です。ここには、外部プログラムのクラス名を指定します。
認証タイプの追加と更新のコード例については、GAM Backoffice に含まれるサンプルオブジェクト GAMExampleEntryAuthenticationType を参照してください。

3.スマート デバイス アプリケーションで「カスタム認証」ログインをプログラミング

SDActions 外部オブジェクト の LoginExternal メソッドを使用します。メソッドに送信する最初のパラメーターは "Custom" です。
Event 'ExternalLogin'
    Composite
        GeneXus.SD.Actions.LoginExternal(GAMAuthenticationTypes.Custom, &User, &Password)
        Return
    EndComposite
EndEvent

4.Web アプリケーションで「カスタム認証」ログインをプログラミング

次のコードは、Web アプリケーションにおけるカスタム外部ログインの実行例を示しています。Web パネルの場合、GAMRepository オブジェクトの Login メソッドを使用します。使用する AuthenticationType を指定するには、GAMLoginAdditionalParameters の変数を定義する必要があります。
GAMExampleLogin Web パネル (GAM Examples 内) で、このコードを例として使用しています:
&AdditionalParameter.AuthenticationTypeName = &LogOnTo //&LogOnTo は、使用したい認証タイプをユーザーが選択するコンボボックスです。// これは認証タイプの名前です。図 1 の例を使用した場合、"custom1.0testjava" になります。&LoginOK = GAMRepository.Login(&UserName, &UserPassword, &AdditionalParameter, &Errors )//&Errors は GAMError のコレクション

注:

1.外部プログラムが GeneXus を使用して開発されている場合、"execute" というメソッドがあります。
プログラムが GeneXus 以外のツールを使用して開発されている場合、認証に任意のメソッドを使用できます。この場合、カスタム認証タイプを定義するときに、次のコード行でメソッド名を宣言する必要があります:
&AuthenticationTypeCustom.Custom.Method = "myauthenticationmethod" //&AuthenticationTypeCustom は GAMAuthenticationTypeCustom データタイプ
完全なコード例については、サンプルオブジェクト GAMExampleEntryAuthenticationType (GAM Examples 内) を参照してください。
2."Custom" 認証タイプは、各 GAM リポジトリに対して 1 つだけ定義できます。


サブページ
Created: 15/01/07 22:47 by Admin Last update: 23/02/13 20:09 by Admin
カテゴリ
Powered by GXwiki 3.0