Service クラスを実装しました。「DataSourceService」としましょう。今、私はそれを WCF を介して公開し、REST にしたいと考えています。問題はありません。これは WCF で簡単に実行できます。
しかし、ここでアーキテクチャの問題が発生します。
だから私はメソッドを持っているとしましょう:
IEnumerable<string> ReadAllInventoryItems()
IEnumerable<string>
ユーザー認証クレーム (役割や権限など) に応じて返さなければならない問題。これは、DataSourceService の各メソッドでこれらのクレームを検証することで実現できます。そんな感じ:
IEnumerable<string> ReadAllInventoryItems()
{
var companyName = ReadCompanyNameFromAuthorisationContext();
var items = ReadAll().Where( i => i.CompanyName == companyName).ToList();
return Items;
}
このアプローチには大きな問題が 1 つあります。つまり、DataSourceService は、この "Claims" コンテキストがないと使用できなくなります。WCF なしで使用する場合は、呼び出しごとに Claims または UserIdentity コンテキストを準備する必要があります。
したがって、次のステップは「WCF IDispatchMessageInspector について考える」ことでしたが、1 つの IDispatchMessageInspector と 1 つの OperationInvoker を実装する必要があることに気付きました。その後、アクセス許可を持つ何らかの属性で Web サービス メソッドを装飾できます (この属性は、後で OperationInvoker で使用されます)。 )。
最後に私は得るでしょう:
[AuthorizationFiltering]
IEnumerable<string> ReadAllInventoryItems()
{
var items = ReadAll().Where( i => i.CompanyName == companyName).ToList();
return Items;
}
あれについてどう思う?
「DataSourceServiceの各メソッドでこれらのクレームを検証する」またはWCF IDispatchMessageInspectorに固執する必要がありますか、MethodInvokerの話はそれほど悪くありません...