Skip to content

Utility to generate tokens to interact with the GitHub API via GitHub App integration

License

Notifications You must be signed in to change notification settings

advanced-security/github-app-auth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub App Authentication for integration with GitHub

Introduction

GitHub Apps are the officially recommended way to integrate with GitHub because of their support for granular permissions to access data. For more information see About Apps

The github-app-auth application is specifically designed to enable integration of third-party CI/CD systems with GitHub by generating a token that can be used to interact with the GitHub API available to GitHub Apps. A list of endpoints available to GitHub Apps is documented here

Examples

Retrieving a list of repositories with the GH CLI

The GitHub CLI allows for convenient access to GitHub from the command line. We can retrieve a list of repositories the GitHub App has permission to access by invoking it with the GITHUB_TOKEN environment variable set to the installation token generated by github-app-auth.

GITHUB_TOKEN=$(github-app-auth <app-id> <private-key>) gh repo list
  • <app-id> is the GitHub App ID
  • <private-key> is the path to the GitHub App PEM encoded private key

Uploading a SARIF file

The GitHub documentation for using CodeQL in a CI system provides the following example for uploading results.

echo "$UPLOAD_TOKEN" | codeql github upload-results --repository=<repository-name> \
      --ref=<ref> --commit=<commit> --sarif=<file> \
      --github-auth-stdin

The $UPLOAD_TOKEN must be a token with the security_events scope as described in the CodeQL manual here.

With github-app-auth application that relies on a GitHub App to generate a token the example becomes.

github-app-auth <app-id> <private-key> | codeql github upload-results --repository=<repository-name> \
      --ref=<ref> --commit=<commit> --sarif=<file> \
      --github-auth-stdin
  • <app-id> is the GitHub App ID
  • <private-key> is the path to the GitHub App PEM encoded private key