1

WCF サービスで使用する必要がある認証/承認サービスがあります。カスタム クライアント/サービス資格情報を、対応するトークンとサポート クラスと共に実装しました。1つのことを除いてすべてが機能します。

要件の一部は、サービス メソッドで (属性を介して) 承認ロールを定義できることです。これらのロールは、ユーザー情報と共に認証サービスに送信され、認証サービスは成功/失敗メッセージで応答します。

以下を実装してみました。

DispatchOperation operation = OperationContext.Current.EndpointDispatcher.DispatchRuntime.Operations.FirstOrDefault(o => o.Action == action);
if (operation != default(DispatchOperation))
{
    Type hostType = OperationContext.Current.Host.Description.ServiceType;
    MethodInfo method = hostType.GetMethod(operation.Name);

    RegistryAuthGroupAttribute authGroupAttribute = (RegistryAuthGroupAttribute)method.GetCustomAttribute(typeof(RegistryAuthGroupAttribute));
    if (authGroupAttribute != null)
    {
        return authGroupAttribute.AuthGroup;
    }
}

これは素晴らしいことです... OperationContext.Current が常に null ではない場合 (認証が行われるまでデータが入力されないことがわかりました。

認証フェーズ中または認証フェーズ前に、ターゲット エンドポイントの ServiceType を取得するための他のオプションはありますか? メッセージ インターセプターを使用することを考えましたが、エンドポイントを指定する xml を取得し、それを使用して ServiceType を検索する方法がわかりません。

4

0 に答える 0