F5 により、ユーザーは iControl RESTful API にアクセスできます。

F5 により、ユーザーは iControl RESTful API にアクセスできます。

REST API を使用して F5 ロード バランサーとやり取りしようとしています。iControl が有効になっていることを確認しましたが、コマンドを実行しようとすると、権限がないというメッセージが表示されます。

curl -k -u someone -H "Content-Type: application/json" -X GET https://f5.example.com/mgmt/
Enter host password for user 'someone':
{"code":404,"message":"http://localhost:8100/mgmt/","restOperationId":202459,"errorStack":["com.f5.rest.common.RestWorkerUriNotFoundException: http://localhost:8100/mgmt/","at com.f5.rest.common.RestServer.trySendInProcess(RestServer.java:231)","at com.f5.rest.common.RestRequestReceiver.dispatchToService(RestRequestReceiver.java:93)","at com.f5.rest.common.RestRequestReceiver.processNext(RestRequestReceiver.java:57)","at com.f5.rest.common.RestHelper$2.run(RestHelper.java:1910)","at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)","at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)","at java.lang.Thread.run(Thread.java:722)\n"]}

ユーザーは Active Directory に対して認証されています。

REST API を使用するには、ユーザーに明示的にアクセスを許可する必要がありますか?
ローカル アカウントが必要ですか?

アップデート

もう一つの例を挙げます

ユーザー「someone」は実際に存在します。そのユーザーを使用して Web ポータルにログインしているからです。

curl -k -u someone -H "Content-Type: application/json" -X GET https://f5.example.com/mgmt/tm/sys
Enter host password for user 'someone':
{"code":401,"message":"Authorization failed: no user named someone found. Uri:http://localhost:8100/mgmt/tm/sys Referer:null","restOperationId":869853,"errorStack":["java.lang.SecurityException: Authorization failed: no user named someone found. Uri:http://localhost:8100/mgmt/tm/sys Referer:null","at com.f5.rest.workers.ForwarderWorker.evaluatePermission(ForwarderWorker.java:411)","at com.f5.rest.workers.ForwarderPassThroughWorker.onForward(ForwarderPassThroughWorker.java:191)","at com.f5.rest.workers.ForwarderPassThroughWorker.onGet(ForwarderPassThroughWorker.java:321)","at com.f5.rest.common.RestWorker.callDerivedRestMethod(RestWorker.java:735)","at com.f5.rest.common.RestWorker.callRestMethodHandler(RestWorker.java:702)","at com.f5.rest.common.RestServer.processQueuedRequests(RestServer.java:1092)","at com.f5.rest.common.RestServer.access$000(RestServer.java:45)","at com.f5.rest.common.RestServer$1.run(RestServer.java:136)","at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)","at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)","at java.lang.Thread.run(Thread.java:722)\n"]}

答え1

REST インターフェイスは、構成した通常の F5 メソッドを使用して認証しません。これを実行するには、F5 をプール メンバーとして仮想サーバーを作成し、いくつかの irules を作成して REST ユーザーを削除し、それを認証に渡す必要があります...後で大量のコードを実行します...成功します。

REST は、f5 上のプロセスにローカルなユーザーとロールを使用します。tmos 経由でユーザーを作成し、PATCH 経由で iControl_REST_API_User ロールに関連付けます。

答え2

iControl RESTリモート認証サポートについては、以下を参照してください。F5のDevCentralの記事

関連情報