DFS Kerberos 認証に必要なトークンを取得するにはどうすればよいですか?
-
26-09-2019 - |
質問
DFS (Documentum Foundation Services) を使用するクライアントを作成し、シングル サインオンに Kerberos を使用しようとしています。ドキュメント内の Java と C# のサンプル コード (生産性レイヤー) には、Kerberos バイナリ トークンを取得する次の行が含まれています。
byte[] チケット = ...
やり方がわかりません 実際にバイナリトークンを取得します, 、「...」は役に立ちません。Java または C# を使用して実際のチケット (Kerberos トークン) を取得する方法を知っている人はいますか?
Java と C# の両方の例を次に示します。
ジャバ: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(...);
解決
私は、.NETのこのアウトを考え出し、多分興味がある人のために共有したいと思います。必要なのはWSE3ライブラリです。 Kerberos委任のためのあなたのDFSサービスアカウントを設定することを確認します。
だから、何をする必要があることはKerberosトークンを使用してKerberosTokenHandlerに設定されています。 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);
}
所属していません StackOverflow