WCF RESTfulサービス(webHttpBinding(およびSOAPの場合のようにwsHttpBindingではない)を使用する)を認証/認可する方法はありますか? I.メンバーシップ/ロールを使用して、ユーザーが自分の役割に従って各ウェブメソッドを使用することを許可(または禁止)したいと考えています。RESTful WCFサービスセキュリティ
ありがとうございます。 Ilan。
WCF RESTfulサービス(webHttpBinding(およびSOAPの場合のようにwsHttpBindingではない)を使用する)を認証/認可する方法はありますか? I.メンバーシップ/ロールを使用して、ユーザーが自分の役割に従って各ウェブメソッドを使用することを許可(または禁止)したいと考えています。RESTful WCFサービスセキュリティ
ありがとうございます。 Ilan。
サービスを保護するため、またはヘッダーにユーザー名とパスワードを送信するために証明書を使用できます。 IAuthorizationPolicy
をこのサービスに実装して、動作を追加して、公開するすべてのWebサービスメソッドでセキュリティチェックを実装する必要がなくなります。 web.configファイルで
public class CertificateAuthorizationPolicy : IAuthorizationPolicy
{
public bool Evaluate(EvaluationContext evaluationContext, ref object state)
{
IIdentity identity;
object untypedIdentities;
if (!evaluationContext.Properties.TryGetValue("Identities", out untypedIdentities))
{
identity = null;
return false;
}
var identities = (IEnumerable<IIdentity>)untypedIdentities;
identity = identities.Where(item => item.AuthenticationType == "X509").FirstOrDefault();
var claimSet = (X509CertificateClaimSet)evaluationContext.ClaimSets[0];
var certificate = claimSet.X509Certificate;
}
あなたはそれが任意のページに接続するためにSSLおよびクライアント証明書を要求するように、別のオプションは、IISサーバー上のセットアップSSLにある
<behavior name="CertificateSecurityServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="CertificateAuthorizationPolicy, MyAssembly.Security" />
</authorizationPolicies>
</serviceAuthorization>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
承認ポリシーを使用するサービスを伝えます。
非常に興味深い..私たちはすでにVeriSign証明書を購入してインストールしました。これはhttpの代わりにhttpsを使用するためです。 IOperationBehaviorでは、webHttpBindingで使用できますか?コードスニペットを教えてください。ありがとう。 – Ilan
実装例のリンクを追加しました – Mharlin
素晴らしい記事、ありがとうございます。しかし、Microsoftメンバーシップ/ロールプロバイダを使用してWebメソッドへのアクセスを許可/禁止するために提案したIOperationBehaviorの使用方法はまだ分かりません。 – Ilan
@imchona SOAP - シンプルオブジェクトアクセスプロトコル – Ilan
RESTサービスの実装方法を知るために構成ファイルの一部を投稿できますか? Restful API経由か、webHttpBindingで定義されたエンドポイントを使用していますか? – Rajesh