ちょっとだけ更新
AuthenticateAttribute
またはRequiredRoleAttribute
を使用しませんでしたServiceStack.ServiceInterface
。
とRequestFilterAttribute
が提供する機能を置き換えるために、2 つのカスタムを作成します。AuthenticateAttribute
RequiredRoleAttribute
各 customRequestFilterAttribute
のExecute
メソッドでは、dotnetopenauth のメソッドを使用してアクセス トークンを検証しています。
//httpReq==req from Execute(IHttpRequest req, IHttpResponse res, object requestDto)
アクセス トークン検証のコードは次のとおりです。詳細については、servicestack と dotnetopenauth の両方の関連ドキュメントを参照してください。ResourceServer は dotnetopenauth のクラスです
HttpRequestBase reqBase = new HttpRequestWrapper((System.Web.HttpRequest)httpReq.OriginalRequest);
var resourceServer = new ResourceServer(new StandardAccessTokenAnalyzer(AuthorizationServerPublicKey, ResourceServerPrivateKey));
IPrincipal ip = null;
resourceServer.VerifyAccess(reqBase, out ip);
ip
がnull
認証されない場合、そうでない場合null
、着信要求は有効であり、 を使用しip
て役割を確認できます。ip.IsInRole(requiredRole)
これがチェックを行う正しい方法かどうかはわかりませんが、私にとってはうまくいきます。より良い解決策は大歓迎です。