0

DFS (Documentum Foundation Services) を使用するクライアントを作成し、シングル サインオンに Kerberos を使用しようとしています。ドキュメントの Java と C# の両方のサンプル コード (生産性レイヤー) は、Kerberos バイナリ トークンを取得する次の行を提供します。

バイト[] チケット = ...

バイナリトークンを実際に取得する方法がわかりません。「...」は役に立ちません。Java または C# を使用して実際のチケット (Kerberos トークン) を取得する方法を知っている人はいますか?

Java と C# の両方の例を次に示します。

Java: Kerberos 認証を使用したサービスの呼び出し

KerberosTokenHandler handler = new KerberosTokenHandler();
IObjectService service = ServiceFactory
.getInstance().getRemoteService(..., contextRoot, Arrays.asList((Handler) handler));
byte[] ticket = ...;
handler.setBinarySecurityToken(
new KerberosBinarySecurityToken(ticket, KerberosValueType.KERBEROSV5_AP_REQ));
service.create(...)

C#: Kerberos 認証を使用したサービスの呼び出し

KerberosTokenHandler handler = new KerberosTokenHandler();
List<IEndpointBehavior> handlers = new List<IEndpointBehavior>();
handlers.Add(handler);
IObjectService service = ServiceFactory
.Instance.GetRemoteService<IObjectService>(..., contextRoot, handlers);
byte[] ticket = ...;
handler.SetBinarySecurityToken(
new KerberosBinarySecurityToken(ticket, KerberosValueType.GSS_KERBEROSV5_AP_REQ));
service.create(...);
4

1 に答える 1

0

私は .NET についてこれを理解したので、興味のある人のために共有したいと思います。必要なのは WSE3 ライブラリです。Kerberos 委任用に DFS サービス アカウントを構成してください。

そのため、KerberosTokenHandler に Kerberos トークンを設定する必要があります。KerberosBinarySecurityToken は WSE3 から取得されます。コードは次のようになります。

KerberosTokenHandler kerberosTokenHandler = new KerberosTokenHandler();

String servicePrincipalName = “DFS/example66”;  // this is the service principal name for your DFS service account in Active Directory.
using (KerberosClientContext kerberosClientContext = new KerberosClientContext(servicePrincipalName, true, ImpersonationLevel.Delegation))
{
      KerberosBinarySecurityToken token = new KerberosBinarySecurityToken(kerberosClientContext.InitializeContext(), KerberosValueType.KERBEROSV5_AP_REQ);
      kerberosTokenHandlerandler.SetBinarySecurityToken(token);
}
于 2011-02-03T19:29:19.947 に答える