# OAuth アプリの承認

GitHub の ID を、OAuth を使ってサード パーティのアプリケーションに接続できます。 OAuth appを認可する際には、そのアプリケーションを信頼することを確認し、誰が開発したのかをレビューし、そのアプリケーションがどういった種類の情報にアクセスしたいのかをレビューしなければなりません。

OAuth app から GitHub のアカウントによる識別を求められた場合、アプリの開発者の連絡先情報と要求されている特定のデータのリストが記載されたページが表示されます。

> \[!TIP]
> OAuth app を認可する前に、[メール アドレスを確認する](/ja/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address)必要があります。

## OAuth appのアクセス

OAuth apps は、GitHub のデータに対して "読み取り" または "書き込み" アクセス権を持っている可能性があります。\_\_\_\_

* **読み取りアクセス**では、アプリがデータを\_参照\_することのみ可能です。
* **書き込みアクセス**では、ユーザーのデータの "*変更*" が可能です。

> \[!TIP]
> 認可されたインテグレーションを定期的にレビューすることをおすすめします。 しばらくの間使われていないアプリケーションやトークンは削除してください。 詳しくは、「[承認された OAuth アプリをレビューする](/ja/apps/oauth-apps/using-oauth-apps/reviewing-your-authorized-applications-oauth)」をご覧ください。

### OAuth のスコープについて

"*スコープ*" は、権限の名前付きグループです。これは、OAuth app がパブリック データと非パブリック データへのアクセスをリクエストできるという権限です。

OAuth app と統合する GitHub を使いたいときは、そのアプリによって、データに対して必要なアクセスの種類がユーザーに通知されます。 アプリケーションにアクセスを許可すれば、アプリケーションはあなたの代わりにデータの読み取りや変更といったアクションを行えるようになります。 たとえば、`user:email` スコープを要求するアプリを使用する必要がある場合、アプリは個人用メール アドレスへの読み取り専用アクセス権を持つことになります。 詳しくは、「[OAuth アプリのスコープ](/ja/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps)」をご覧ください。

> \[!NOTE]
> 現在、ソース コードのアクセスのスコープを読み取り専用に設定することはできません。

トークンは、トークンのオーナーと同様に、リソースにアクセスしてそれらのリソースに対してアクションを実行できますが、さらに、トークンに付与されるスコープまたはアクセス許可によって制限されます。 トークンは、ユーザーに追加のアクセス権を付与できません。 たとえば、アプリケーションは、`admin:org` スコープで構成されたアクセス トークンを作成できますが、アプリケーションのユーザーが Organization のオーナーでない場合、アプリケーションには Organization への管理アクセス権は付与されません。

ユーザー/アプリケーション/スコープの組み合わせごとに、1 時間あたり作成されるトークン数には 10 という上限があります。 アプリケーションで同じユーザーと同じスコープに対して 10 個を超えるトークンが作成された場合、同じユーザー/アプリケーション/スコープの組み合わせを持つ最も古いトークンが取り消されます。 ただし、時間単位のレート制限に達しても、最も古いトークンは取り消されません。 代わりに、ブラウザー内で再承認プロンプトがトリガーされ、ユーザーはアプリに付与しているアクセス許可を再確認するよう求められます。 このプロンプトは、アプリが 1 時間以内にユーザーに 10 個のトークンを要求する理由がほとんどないため、アプリが陥っている可能性のある無限ループを中断させることを目的としています。

### リクエストされるデータの種類

OAuth apps がリクエストできるデータは、数種類あります。

| データの種類     | 説明                                                                                                                                                           |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| コミットのステータス | アプリケーションにコミットのステータスをレポートするためのアクセスを許可できます。 コミットステータスのアクセスがあれば、アプリケーションはビルドが特定のコミットに対して成功したかどうかを判定できます。 アプリケーションはコードへのアクセスは持ちませんが、特定のコミットに対するステータス情報を読み書きできます。 |
| デプロイメント    | デプロイメントのステータスへアクセスできれば、アプリケーションはパブリック及びプライベートのリポジトリの特定のコミットに対してデプロイメントが成功したかを判断できます。 アプリケーションはコードにはアクセスできません。                                                |
| Gists      |                                                                                                                                                              |

```
          [Gist](https://gist.github.com) アクセスでは、ユーザーのパブリック Gist とシークレット Gist の両方への、アプリによる読み取りや書き込みが可能です。 |
```

\| フック |
[Webhook](/ja/webhooks-and-events/webhooks/about-webhooks) アクセスでは、管理するリポジトリのフック構成への、アプリによる読み取りや書き込みが可能です。 |
\| 通知 | 通知アクセス権があれば、アプリは issue や pull request へのコメントなど、ユーザーの GitHub 通知を読むことができます。 しかし、アプリケーションはリポジトリ内へはアクセスできないままです。 |
\| 組織とチーム | Organization および Team のアクセスがあれば、アプリケーションは Organization および Team のメンバー構成へのアクセスと管理ができます。 |
\| ユーザーの個人データ | ユーザデータには、名前、メールアドレス、所在地など、ユーザプロファイル内の情報が含まれます。 |
\| リポジトリ | リポジトリ情報には、コントリビュータの名前、あなたが作成したブランチ、リポジトリ内の実際のファイルなどが含まれます。 アプリケーションはユーザ単位のレベルでパブリックあるいはプライベートリポジトリへのアクセスをリクエストできます。 |
\| リポジトリの削除 | アプリケーションはあなたが管理するリポジトリの削除をリクエストできますが、コードにアクセスすることはできません。 |
\|  |
\| プロジェクト | ユーザーおよび組織の projects へのアクセス。 アプリでは、読み取りおよび書き込みアクセスか、読み取り専用アクセスのいずれかを要求できます。 |
\|  |

## 更新された権限のリクエスト

OAuth apps によって新しいアクセス権限がリクエストされると、現在の権限と新しい権限の違いが知らされます。

## OAuth apps と Organization

個人用のユーザー アカウントで OAuth app を承認する場合、自分がメンバーになっている各 Organization がどのように影響を受けるかについてもわかります。

* **OAuth app のアクセス制限が "*ある*" 組織の所有者の場合、その組織でのアプリケーションの使用の承認を組織管理者にリクエストできます。** Organization からアプリケーションの承認が受けられない場合、アプリケーションによるアクセスは、Organization のパブリック リソースに限られます。 組織管理者であれば、自分で[アプリケーションを承認](/ja/organizations/managing-oauth-access-to-your-organizations-data/approving-oauth-apps-for-your-organization)できます。

* **OAuth app のアクセス制限が "*ない*" Organization、このアプリケーションによるその Organization のリソースへのアクセスは自動的に承認されます。** このため、すべての Organization リソースはもとより、個人用アカウント リソースへのアクセスが承認されている OAuth apps については、注意を払う必要があります。

SAML シングル サインオン (SSO) が有効になっている組織に属していて、過去に SAML 経由で認証することでその組織のリンクされた ID を作成した場合は、OAuth app を承認するたびに、各組織に対してアクティブな SAML セッションが必要です。

> \[!NOTE]
> 承認された OAuth app または GitHub App で SAML によって保護された組織にアクセスする際に問題が再発生する場合、[承認された GitHub Apps](https://github.com/settings/applications) または [承認された OAuth apps](https://github.com/settings/apps/authorizations) のページからのアプリの取消しが必要になることがあります。組織にアクセスして有効な SAML セッションを認証して確立してから、アプリにアクセスしてもう一度承認を行ってください。

## 参考資料

* [OAuth アプリのアクセス制限について](/ja/organizations/managing-oauth-access-to-your-organizations-data/about-oauth-app-access-restrictions)
* [GitHub アプリの承認](/ja/apps/using-github-apps/authorizing-github-apps)
* [GitHub Marketplace のサポート](/ja/support/learning-about-github-support/github-marketplace-support)