私は従来の.net 2.0 .asmx Webサービスを使用しています(WCFに切り替えることを納得させました。私はカスタムSOAPヘッダーを使用するだけでなく、各リンクに認証コードを持たずにユーザーを認証する方法を見つけようとしています。SoapHeaderAttributeをオーバーライドして、属性に認証を追加しようとしています
現在、私のWebサービスは、次のようになります。理想的には
public WebserviceAuthentication currentUser;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeader("currentUser")]
public string HelloWorld()
{
var user = AuthenticateUser(currentUser, WebServiceResources.MEDICAREELIGIBILITY_HELLOWORLD);
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
、私は次のようにコードを変更したい:
public WebserviceAuthentication currentUser;
public CustomAuthentication user;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeaderAuthentication("currentUser")]
public string HelloWorld()
{
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
SoapHeaderAuthenticationがあるCurrentUserを読み、情報があることを確認します登録ユーザー。そうであれば、カスタムユーザーオブジェクトを返し、ユーザーオブジェクトを設定します。 Webサービス内からユーザオブジェクトにアクセスすることができました。
問題は、密閉されたクラスなので、私はSoapHeaderAttributeを拡張できません。
WSEは使用できますか? –
おそらく。例がありますか? – Cyfer13
実際はありません。最近の実装では、WSEでヘッダーをより詳細に制御できるようになったことは分かっています。 –