2

私は設計段階にいるだけでなく、ソフトウェアを実装するための主要言語として Python を選択するかどうかを決定する段階でもあります。タスクは次のとおりです。

  • 安らかな Web サービスのセットを実装する
  • http メソッドを特定のユーザー グループに許可します。そのためには、ポリシー定義に xacml を使用する必要があり (または別の標準にすることもできます)、情報に saml を使用する必要があります。両替
4

3 に答える 3

2

これらの RESTful サービスを実装するために使用できるライブラリについて質問がある場合は、標準の Python ライブラリのBaseHTTPServerモジュールを調べてください。

次のコードは、GET 要求を受け入れる単純なサーバーを実装するのがいかに簡単かを示しています。

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            f = open(curdir + sep + self.path) #self.path has /test.html
            self.send_response(200)
            self.send_header('Content-type',    'text/html')
            self.end_headers()
            self.wfile.write(f.read())
            f.close()
        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)

def main():
    try:
        server = HTTPServer(('', 80), MyHandler)
        print 'Welcome to the machine...'
        server.serve_forever()
    except KeyboardInterrupt:
        print '^C received, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()

もちろん、コードは自分のものではありません。ここで見つけました。

于 2011-05-11T13:03:38.373 に答える
0

Python を使用して、ユーザーの ID を含む XACML リクエストを作成し (通常、認証前に行われる認証フェーズから取得します)、ユーザーが対象としている WS に関する情報を追加します。それはURIかもしれませんし、HTTPメソッドかもしれません...

最終的に、次のような sthg が表示される場合があります。

<?xml version="1.0" encoding="UTF-8"?><xacml-ctx:Request xmlns:xacml-ctx="urn:oasis:names:tc:xacml:2.0:context:schema:os">
   <xacml-ctx:Subject SubjectCategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
      <xacml-ctx:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" DataType="http://www.w3.org/2001/XMLSchema#string">
         <xacml-ctx:AttributeValue>Alice</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Subject>
   <xacml-ctx:Resource>
      <xacml-ctx:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string">
         <xacml-ctx:AttributeValue>/someuri/myapi/target.py</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Resource>
   <xacml-ctx:Action>
      <xacml-ctx:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string">
         <xacml-ctx:AttributeValue>GET</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Action>
   <xacml-ctx:Environment>
   </xacml-ctx:Environment>
</xacml-ctx:Request>

たとえば、Python と lxml を使用してリクエストを作成する必要があります。

応答は次のようになります

<xacml-ctx:Response xmlns:xacml-ctx="urn:oasis:names:tc:xacml:2.0:context:schema:os">
  <xacml-ctx:Result>
    <xacml-ctx:Decision>Permit</xacml-ctx:Decision>
    <xacml-ctx:Status>
      <xacml-ctx:StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok"/>
    </xacml-ctx:Status>
  </xacml-ctx:Result>
</xacml-ctx:Response>

この場合も、XML を解析して許可などの決定を抽出する必要があります。XACML PDP への基本的な REST に似たインターフェイスを作成しました。HTTP GET を URI に送信し、変数を GET 変数として渡します。例: http://www.xacml.eu/AuthZ/?a=alice&b=/ someuri/myapi/target.py&c=GET

それは役に立ちますか?

于 2011-11-05T19:51:21.863 に答える