これはばかげた質問かもしれませんが、Active Directoryから現在ログインしているユーザーのGSSAPIトークンを取得することは可能ですか?
サーバーに接続する単純なライブラリがあります。ユーザー名、パスワード、ドメイン名、またはGSSトークン(base64)を渡すことができます。今のところ最初の方法は私にとってはうまくいきますが、ユーザーがパスワードを入力しなければならないのは面倒です。
GSSAPIとActiveDirectoryとの統合に関する情報が見つかりませんでした。
C#で可能ですか?
@Harvey Kwokのコメントに基づくいくつかの詳細情報:ライブラリが呼び出さAltair COM
れ、ドキュメント管理に使用されます
GSSを使用したログインに関するAPIリファレンスは次のとおりです。
HRESULT LoginGSS(
[in] VARIANT *token,
[in] VARIANT_BOOL forceCreateNew,
[out,retval] VARIANT *retToken)
以下は、VBでの使用例です。
Dim token(tokensize) As Byte 'token size-1
’fill token buffer
...
Dim outToken() As Byte
outToken = altair.LoginGSS(token,True)
'if GetLastStatus == AXAPI_ALTAIR_LOGIN_CONTINUE then
'outToken contains return GSS API token
そしてVC++の使用法
SAFEARRAYBOUND sab[1];
sab[0].lLbound=0;
sab[0].cElements=tokensize;
SAFEARRAY *sa;
sa=SafeArrayCreate(VT_UI1,1,sab);
unsigned char HUGEP *buf=NULL;
SafeArrayAccessData(sa,(void HUGEP**)&buf);
//fill token buffer
...
SafeArrayUnaccessData(sa);
v.vt=VT_ARRAY|VT_UI1;
v.pparray=sa;
VARIANT vOut;
pAltair->LoginGSS(&v,true,&vOut);
SafeArrayDestroy(sa);
'if GetLastStatus == AXAPI_ALTAIR_LOGIN_CONTINUE then
'outToken contains return GSS API token
これは私が持っているすべての情報です。
ログイン手順を示すコードスニペットを見つけました:
byte[] token;
token = Convert.FromBase64String(tbToken.Text);
Object o;
o = (Object)token;
Program.altair.LoginGSS(ref o, true);
if ((AXAPILib.AxAPIStatus)altair.GetLastStatus()==AXAPILib.AxAPIStatus.AxAltairLoginOK)
{
//login ok
}
しかし、私はそのトークンを入力する必要があり、現在のユーザーのためにそれを生成しようとしています。