ユーザー承認なしでユーザーAPIキー生成

もしかしたら、私たちは同じものを作っているのかもしれません :slight_smile: 私のは、いくらかヘッドレスですが。

ないと思います。それは意図的なのでしょう。

私も同じことを考えていましたが、私の場合は大丈夫だと思います。Discourse を隠そうとしているわけではありません。

ユーザー API キーと管理者全員の API キーで注意すべき点は、デフォルトで異なるレート制限が適用されることです: https://meta.discourse.org/t/available-settings-for-global-rate-limits-and-throttling/78612。

ユーザー API レート制限:
DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: デフォルト 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: デフォルト 2880

管理者 API レート制限:
DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE: 60

セルフホスト型の Discourse サイトに接続するアプリケーションの場合、管理者 API レート制限をオーバーライドできる可能性が高いです。ホスト型の Discourse インスタンスに接続するアプリケーションの場合、ユーザー API レート制限はより多くの柔軟性を提供します。管理者 API レート制限では、すべてのリクエストをレート制限されたキューに入れる必要があります。

編集: キーを生成するために User API Keys Specification を使用する代わりに、ユーザー API キーを生成するために管理者 API キーを使用できます。これにより、ユーザーがアプリを承認する必要があるという問題が回避されます。

以下に投稿するキーは私のローカルホストドメイン用なので、投稿してもリスクはありません。

unescaped key params: {key:description:sally} {key:username:sally} {key:scopes:[scope_id:topics:write]} {key:scopes:[key:write]} {key:scopes:[name:write]} {key:scopes:[params:[topic_id]]} {key:scopes:[urls:[/posts (POST)]]} {key:scopes:[selected:true]}

❯ curl -X POST "http://localhost:4200/admin/api/keys" \
      -H "Api-Key: $api_key" \
      -H "Api-Username: system" \
      -H "Content-Type: application/json" \
      -d $json
{"key":{"id":29,"key":"f5c6307b51dd2882bde525dc9775fe7504b55c93fa40177b650f9e6b77a9d25b","truncated_key":"f5c6","description":"sally","last_used_at":null,"created_at":"2024-06-02T00:44:19.944Z","updated_at":"2024-06-02T00:44:19.944Z","revoked_at":null,"user":{"id":3,"username":"sally","avatar_template":"/user_avatar/127.0.0.1/sally/{size}/58_2.png"},"api_key_scopes":[{"resource":"topics","action":"write","parameters":["topic_id"],"urls":["/posts (POST)"],"allowed_parameters":{},"key":"write"}]}}

いずれの場合も、管理する必要のある API キーが残ります。データベースに暗号化して保存していると仮定します。

「いいね!」 5