A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://api.slack.com/authentication/best-practices below:

Best practices for security | Slack

Keeping credentials secure is important whether you're developing open source libraries and tools, internal integrations for your workspace, or Slack apps for distribution across workspaces.

Even if you're not working with OAuth 2.0 and user access tokens, consider the following recommendations when developing on the Slack platform.

Security considerations for Slack apps

As a Slack app developer, you'll be working with credentials issued to you from Slack, as well as token values representing members, workspaces, and specific features of your app.

Client ID and secret
  1. Your Client ID is one piece of information used to identify your app, and frequently appears in OAuth negotiation URLs and other contexts. Your Client ID can be shared freely in code and email, and cannot be used alone to act on your app's behalf.

  2. Your Client Secret should be treated delicately. It is how you securely identify your app's rights and identity when exchanging tokens with Slack. Do not distribute client secrets in email, distributed native apps, client-side javascript, or public code repositories.

Slack app-based user & bot user tokens

These tokens represent specific access levels granted by the OAuth scopes you obtained.

Bot user tokens can connect to the Real Time Messaging (RTM) API and post messages on their own behalf. They can also access a subset of API methods to better understand the channels, members, and messages received as part of its activities.

User tokens, such as those received through the Add to Slack and Sign in with Slack flows are capable only of the permissions granted to it during the OAuth flow using scopes.

Store user and bot user tokens with care and never place them in a public code repository or client-side code such as Javascript.

Restricting token use by IP address

Slack can limit use of your app’s OAuth tokens to a list of IP addresses and ranges you provide. Slack will then reject Web API method calls from unlisted IP addresses.

Restricting token use by IP address applies to token use against the Web API and the SCIM API for local or distributed apps. Allowed IP listing does not apply to incoming webhooks.

Once you provide a list of allowed IP addresses, Slack will ony accept a request to call Web API methods if it comes from one of those IP addresses. If the request matches your allowed list, Slack will execute the request and respond.

If the request originates from an IP address not listed in your allowed list, it will be rejected with the following response:

{
  "ok": false,
  "error": "invalid_auth"
}
Configuring your allowed IP list

To configure your allowed IP list:

  1. Navigate to your application management and select the relevant app.
  2. Select the OAuth & Permissions section from the left-hand navigation.
  3. Find the Restrict API Token Usage section. This section lists all the Allowed IP Address Ranges you set up.
  4. Click Add a new IP address range.
  5. Enter the desired IP address range and click Add.
  6. Select Save IP address ranges.

You can add up to 10 entries. Each entry specifies either a CIDR range of IP addresses or a single IP address. For example:

"Local" IP addresses cannot be added to allowed lists, and IPv6 is not supported.

Verifying requests from Slack

Slack also supports several ways to verify the authenticity of its requests to your app. Read more in the verifying requests from Slack documentation.

Rotating and expiring tokens

Read more about how to use token rotation for new and existing Slack apps.

Revoke tokens manually with the auth.revoke method.

Incoming webhook URLs

Slack app-based incoming webhook URLs allow posting messages only to a specific channel configured by the approving member. Their identity is always tied to the app associated with the URLs, and cannot be used as arbitrary users or on unapproved channels.

Redirect URIs

Redirect URIs appear as URLs and are safe to be part of published code. However, ensure that the redirect URIs defined in a public app are limited only to domain names in your direct control.

We recommend that after you complete local development, you should remove localhost and related domains from your configuration list.

Safe token storage

Storing authentication secrets is difficult, and how you do so depends on context, usage, and design requirements. While it would be great if all tokens were encrypted with individual keys controlled by the customers, most implementations do not allow that. Here are some things to consider when storing tokens to ensure we're doing everything we can to prevent accidental exposure or mix-up of usage.

The token The Open Systems Interconnection (OSI) model

The 7-Layer OSI model breaks out how apps and computers function over a network, and can provide a useful model for thinking about security at each layer.

Application and presentation layers

The application layer is mostly focused on high-level APIs and how your app exposes itself to an end user. Here are some things to consider:

Session layer Transport layer Network, data link, and physical layers

These layers encompass most of the non-app-based internet plumbing, including protocols such as TCP, IPv4, MAC, and Ethernet. We're going to assume for safe token usage and storage that these layers are already secure; however, there are a few points to consider, especially if you are hosting in the cloud.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4