JetBrains Space ヘルプ

権限のリクエスト

特定の Space エンドポイントにアクセスするには、アプリケーションはまず対応するアクセス許可を取得する必要があります。例: アプリケーションがプロジェクトの課題を作成する場合、アプリケーションには課題の作成権限が必要です。課題の詳細を表示するには、課題を表示する権限が必要です。アプリケーションに必要な権限のセット全体は、権限スコープと呼ばれます。

アプリケーションがアクセス許可を要求する方法は、アプリケーション自体の代わりに動作するアプリケーションと、Space ユーザーの代わりに動作するアプリケーションでは異なります。

特定の HTTP API 呼び出しに必要な権限を確認するには

  1. API Playground を開きます。

  2. 必要なエンドポイントを見つけて選択します。必要な権限がページの上部に表示されます。

    Check rights in API Playground

    API Playground は、アプリケーションが Space へのリクエストで使用できる必要な権限を文字列形式で示すことに注意してください。例: 課題の作成権限は Project.Issues.Create として、課題を表示するProject.Issues.View としてリクエストする必要があります。

権限コンテキスト

権限をリクエストするときは、常に権限コンテキストを指定します。例: グローバルコンテキストで付与された課題の作成権限により、組織全体内の任意のプロジェクトで課題を作成できます。プロジェクトのコンテキストで付与される同じ権限により、この特定のプロジェクトでのみ課題を作成できます。

グローバル権限

これらは、グローバル (組織) コンテキストで付与される権限です。例: アプリケーションに新しいメンバーを追加するを付与すると、組織全体に新しい Space メンバーを追加できるようになります。システム管理者ロールを持つ管理者のみがグローバル権限を付与できます。他のロールを持つアプリケーションとユーザーは、システム管理者からのグローバル権限のみを要求できます。

プロジェクトの権限

プロジェクト権限は、特定のプロジェクト内でアプリケーションが実行できる内容を定義します。例: 課題の表示、プロジェクトリポジトリのチェックアウトなど。(必要なプロジェクト内で) プロジェクト管理者ロールを持つユーザーのみがプロジェクトレベルの権限を付与するを実行できます。他のロールを持つアプリケーションおよびユーザーは、プロジェクト管理者からのアクセス許可のみを要求できます。

チャットチャネルの権限

チャットチャネルのアクセス許可は、特定のチャットチャネル内でアプリケーションが実行できる内容を定義します。例: メッセージの投稿、新しいメンバーの追加など。チャットチャネル権限を付与するできるのはチャネル管理者のみです。アプリケーションと他のユーザーは、チャネル管理者にのみアクセス許可を要求できます。

アプリケーションに代わって権限をリクエストする

アプリケーションがそれ自体に代わってアクセス許可を取得するには、いくつかの方法があります。

Space へのリクエストで権限をリクエストする

アクセス許可を要求するには、アプリケーションは request-rights HTTP API エンドポイントに要求を送信する必要があります。例: これは、アプリケーションが MY-APP キーとグローバル Project.Issues.Create 権限を持つプロジェクトに対して Automation.Execution.View および Project.CodeReview.View 権限をリクエストする方法です。

val space = SpaceClient( ktorClient = ktorClientForSpace(CIO), appInstance = SpaceAppInstance(clientId, clientSecret, "https://mycompany.jetbrains.space"), auth = SpaceAuth.ClientCredentials() ) suspend fun requestPermissions(){ space.applications.authorizations.authorizedRights.requestRights( application = ApplicationIdentifier.Me, // project context contextIdentifier = ProjectPermissionContextIdentifier(ProjectIdentifier.Key("MY-PRJ")), // required permissions rightCodes = listOf(PermissionIdentifier.ViewAutomationJobs, PermissionIdentifier.ViewCodeReviews) ) space.applications.authorizations.authorizedRights.requestRights( application = ApplicationIdentifier.Me, // global context contextIdentifier = GlobalPermissionContextIdentifier, rightCodes = listOf(PermissionIdentifier.CreateIssues) ) }
PATCH https://mycompany.jetbrains.space/api/http/applications/me/authorizations/authorized-rights/request-rights Authorization: Bearer here-goes-auth-token Accept: application/json Content-Type: application/json { "contextIdentifier": "project:key:MY-APP", "rightCodes": [ "Automation.Execution.View", "Project.CodeReview.View" ] } PATCH https://mycompany.jetbrains.space/api/http/applications/me/authorizations/authorized-rights/request-rights Authorization: Bearer here-goes-auth-token Accept: application/json Content-Type: application/json { "contextIdentifier": "global", "rightCodes": [ "Project.Issues.Create" ] }

アプリケーションがアクセス許可を要求した後、その要求は組織、プロジェクト、チャネル管理者によって承認されているである必要があります。

Space のアプリケーションのページで権限をリクエストする

アプリケーションのグローバル権限をリクエストするには

  1. 拡張 | 組織にインストールページでアプリケーションを見つけて開きます。

  2. 許可タブを開きます。

  3. グローバル認証で、構成をクリックします。

  4. 要求された権限ウィンドウで、アプリケーションに必要なグローバル権限を指定します。

  5. 権限リクエストがシステム管理者によって承認されるまで待ちます。それまでは、指定されたアクセス許可は「要求済み」状態になります。

    App permissions request

アプリケーションのコンテキスト権限をリクエストするには

  1. 拡張 | 組織にインストールページでアプリケーションを開きます。

  2. 許可タブを開きます。

  3. アプリケーションにすべてのコンテキスト (チャネルとプロジェクト) に対して同じ権限セットを持たせたい場合は、次のようにします。

    1. コンテキスト内認証で、要件を構成するをクリックします。

    2. 必須アクセス権ウィンドウで、アプリケーションに必要な権限を指定し、保存して要求をクリックします。

    3. コンテキスト内認証で、Add permission 新しいコンテキストで承認するをクリックします。

    4. 新しいコンテキストで承認するウィンドウで、必要なチャンネルやプロジェクトを追加し、許可をクリックします。

  4. アプリケーションにコンテキスト (特定のチャネルまたはプロジェクト) に応じて異なる権限セットを持たせたい場合は、次のようにします。

    1. コンテキスト内認証で、Add permission 新しいコンテキストで承認するをクリックします。

    2. 新しいコンテキストで承認するウィンドウで、必要なチャンネルやプロジェクトを追加し、許可をクリックします。

    3. 構成をクリックし、アプリケーションに必要な権限を指定します。

    4. 保存をクリックします。

  5. 権限リクエストがチャネルまたはプロジェクト管理者によって承認されるまで待ちます。それまでは、指定されたアクセス許可は「要求済み」状態になります。

    App context permissions request

永続的なアプリケーショントークンを使用してアクセス許可を取得する

ワークフローは次のようになります。

  1. アプリケーション所有者は、アプリケーションを Space に登録します

  2. 所有者は、アプリケーションの許可タブで必要な権限を手動で要求します

  3. 適切な管理者ロールを持つ Space ユーザーがリクエストを承認します

  4. 所有者は、アプリケーションの永久トークンタブで永久トークンを作成します

  5. アプリケーションはトークンを使用して、アプリケーション自体に代わってリクエストを行います

ユーザーに代わって権限をリクエストする

アプリケーションがユーザーに代わってアクセス許可を取得するには、いくつかの方法があります。

OAuth スコープを使用してアクセス許可をリクエストする

アプリケーションが認可コードの流れまたはリフレッシュトークンを使用した認可コードフローを使用する場合、Space から認可トークンを取得するときに必要なアクセス許可を指定する必要があります。

ユーザーの場合、ワークフローは次のようになります。

  1. Space ユーザーは、Space で承認を必要とするアクションを実行するアプリケーションと対話します。

  2. アプリケーションはユーザーを Space Web ページにリダイレクトし、そこで要求されたアクセス許可をアプリケーションに付与します。

例: これは、アプリケーションが Git リポジトリを読み取る権限をリクエストし、MY-APP キーを使用してプロジェクトの詳細を表示する方法です (認可コードフロー、ユーザーは https://myapp.url/space にリダイレクトされます)。

val authUrl = with(URLBuilder("https://mycompany.jetbrains.space/oauth/auth")) { parameters.apply { append("response_type", "code") append("redirect_uri", "https://myapp.url/space") append("client_id", "here-goes-app-clientid") append("request_credentials", "default") // permissions must be separated by whitespace append("scope", "project:key:MY-APP:Project.View project:key:MY-APP:VcsRepository.Read") } build() }

権限は、最初の認証リクエストscope パラメーターにリストされている必要があります。

GET https://mycompany.jetbrains.space/oauth/auth?response_type=code& redirect_uri=https%3A%2F%2Fmyapp.url%2Fspace&client_id=here-goes-app-clientid& request_credentials=default& scope=project%3Akey%3AMY-APP%3AProject.View+project%3Akey%3AMY-APP%3AVcsRepository.Read

ユーザーが要求されたすべてのアクセス許可を付与しない場合、要求に含まれるスコープは応答に含まれるスコープと一致しないことに注意してください。

権限スコープの形式

権限スコープには文字列形式 <context>:<permission> を使用します。

<context>許可コンテキストです。

  • グローバル権限の場合は global。例:

    global:Project.Issues.Create global:Profile.Create

  • プロジェクト権限の場合は project:key:<project_key> または project:<project_id> 例:

    project:key:MY-APP:Project.Issues.Create project:42P9E54DAkJW:Project.Issues.Create
  • channel:<channel_id> チャネル許可。例:

    channel:42P9E54DAkJW:Channel.ViewMessages

利用可能なすべての権限を要求するには、** スコープを使用します。

可能なすべての権限のリストを取得するには、認可されたすべての権利を取得する API メソッドを使用できます。

MenuAction ペイロードに応じてアクセス許可をリクエストする

アプリケーションがカスタム項目を使用して Space メニューを拡張する場合、Space UI で直接ユーザー認証を要求できます。ワークフローは次のようになります。

  1. ユーザーは、アプリケーションに関連付けられたカスタムメニュー項目をクリックします。

  2. Space は、MenuActionPayload リクエストをアプリケーションエンドポイントに送信します。

  3. アプリケーションは、必要な権限を持つユーザートークンをすでに持っているかどうかを確認します。そうでない場合は、ユーザーに必要な権限を要求する応答を Space に送信できます。権限は AuthCodeFlowPermissionsRequest.scope プロパティで指定されます。詳細

  4. ユーザーには、アプリケーションの承認を求めるダイアログが Space に表示されます。

アプリケーションの完全な例を見る(英語)

永続的なユーザートークンを使用して権限を取得する

ワークフローは次のようになります。

  1. ユーザーは個人トークンを作成します。トークンを作成するとき、ユーザーは必要な権限を指定します。

  2. アプリケーションはトークンを使用して、ユーザーに代わってリクエストを行います

権限リクエストを承認する

アプリケーション所有者がアプリケーションに対する権限を要求すると、Space は通知メッセージを送信します。メッセージの受信者はコンテキストによって異なります。

  • グローバル権限の場合: システム管理者ロールを持つすべてのユーザーの Space ボックスチャネル。

  • プロジェクト権限の場合: このプロジェクトのプロジェクト管理者ロールを持つすべてのユーザーの Space ボックスチャネル。

    Spacebox. Request for permissions
  • プライベートチャットチャネルの権限の場合: チャネル自体。すべてのチャネル参加者がリクエストを表示できますが、リクエストを承認できるのはチャネル管理者 (チャネルを作成したユーザー) だけです。

    Channel permissions request
  1. 対応するチャネルを開き、メッセージ内のリクエストの表示をクリックします。

  2. 対応する承認するボタンを使用して、要求された権限を確認して承認します。すべての権限を一度に承認するには、「すべて承認する」をクリックします。

    Approve permissions request

関連ページ:

Space HTTP API

Space HTTP API を使用すると、チャット、チームディレクトリ、プロジェクト、ドキュメント、パッケージなどの任意の Space モジュールにプログラムでアクセスできます。特定の API リクエストの実行の詳細については、API 参照を参照するか、API Playground(下記を参照) を使用してください。HTTP API をすぐに使い始めるには、Space SDK を使用します。API Playground:API Playground を使用すると、次のことが可能になります。Spac...

権限の付与

Space では、個別の権限をユーザーに直接付与することはできません。ユーザーに特定の権限を付与するには、それらの権限を含むロールをそのユーザーに付与します。グローバルアクセス:システム管理者は、一連のグローバル権限を含むデフォルトのロールです。グローバル権限は組織全体で有効です。ユーザーをシステム管理者ロールに追加することにより、ロールページでユーザーにこれらの権限を付与します。チームを追加することもできます。ユーザーまたはチームにシステム管理者のロールを付与するには、次の手順を実行するメイ...

プロジェクトへのアクセスを管理する

プロジェクトを作成すると、プロジェクトの管理者になり、誰がどのレベルでそのプロジェクトにアクセスできるかはあなた次第です。プロジェクトへのアクセスは、プロジェクトにユーザーを追加し、事前定義された一連の権限を持つロールを割り当てることにより、メンバーシップベースで提供されます。各プロジェクトには、次の事前定義されたロールが付属しています。プロジェクト管理者 — アクセスの管理とプロジェクトモジュールの構成、およびプロジェクトへの貢献を許可する必要があるプロジェクト参加者を対象としています。プロジェ...

単一組織アプリケーションの登録

アプリケーションの登録は、単一組織アプリケーションを Space インスタンスにインストールする主な方法です。アプリケーションを登録するときは、認可フロー、必要な権限、アプリケーションのエンドポイントなどの設定を手動で指定します。アプリケーションを Space インスタンスに追加する:メインメニューで、「拡張」をクリックし、「インストール済み」を選択します。新しいアプリをクリックします。指定: ユニークなアプリケーション名前。アプリケーションメール。アプリケーションが Space リポジトリにコ...

カスタムメニュー項目

サンプルカスタムメニュー項目を課題コンテキストメニューに追加するサンプルアプリケーション、アプリケーションは、Space のコンテキストメニューにカスタムメニュー項目を追加できます。ユーザーがカスタム項目をクリックすると、Space はアプリケーションにメッセージを送信します。メッセージには、タイプのペイロードが含まれています。カスタムメニュー項目を追加できる場所:現在、次の Space エンティティのコンテキストメニューはカスタム項目で拡張できます。課題、チャットメッセージ、コードレビュー、...

個人トークン

個人トークンは、データの取得と操作のために外部アプリケーションから Space に送信される API リクエストを認証および承認するために Space でサポートされている 2 つの方法のうちの 1 つです。Space アカウントで個人トークンを作成し、それを外部アプリケーションに提供できます。個人トークンは、ユーザーに代わって外部アプリケーションを認証します。トークンを作成するときに、データとアクションへのアクセスを制限する、限定されたアクセス許可のセットをトークンに付与できます。自分が持ってい...