ZAuthenticate
ZAUTHENTICATE ルーチンの簡単な例を以下に示します。
ZAUTHENTICATE(ServiceName,Namespace,Username,Password,Credentials,Properties) PUBLIC {
#include %occErrors
set $ZTrap="Error"
set Name=$ZConvert(Username,"U")
set Name=$piece(Username,"@",1)
set UserRecord=$get(^MYUSERS(Name))
if (UserRecord="")
{
quit $SYSTEM.Status.Error($$$UserDoesNotExist,Username)
}
if ($SYSTEM.Encryption.SHA1Hash(Password)'= $List(UserRecord,1))
{
quit $SYSTEM.Status.Error($$$UserInvalidPassword)
}
set Properties("FullName")=$piece(UserRecord,",",2)
set Properties("Comment")=""
set Properties("Roles")="%All"
set Properties("NameSpace")=Namespace
set Properties("Routine")=""
set Properties("Password")=Password
set Properties("Username")=Name
quit $SYSTEM.Status.OK()
Error
set $ZTrap=""
quit $SYSTEM.Status.Error(5002 /*$$$ObjectScriptError*/,$ZError)
}
このコードは、以下のように動作します。
-
MYUSERS でユーザにより入力されたユーザ名を検索します。
-
入力されたユーザ名が MYUSERS に含まれていた場合、このユーザの情報を取得し、続行します。含まれていなかった場合は、エラーを表示して終了します。
-
MYUSERS に保存されているパスワードの値と、ユーザにより入力されたパスワードを比較します。ただし、このパスワードは保存前にハッシュされています。値が一致した場合、ルーチンは続行します。不一致の場合は、エラーを表示して終了します。
-
有効なユーザについて、そのユーザ情報を Properties 配列に保存します。InterSystems IRIS は、この配列から情報を取得します。この情報は管理ポータルで表示することができます。
詳細は、"ZAUTHENTICATE のシグニチャ" を参照してください。