日本時間5月16日のContent Cloud Summitで、カスタムアプリにBox AI APIを活用する方法を紹介します。

詳細を表示

Oktaの構成

Oktaの構成

OktaとBoxの統合における次の手順では、Oktaアプリケーションとユーザーを作成して構成した後、アプリケーション内でOktaに接続するために必要となるいくつかの情報を抽出します。

Oktaのアプリケーションダッシュボード

このチュートリアルでは、空のアプリケーションとユーザーダッシュボードから開始します。これは、準備が整っている可能性のある既存のインストールへの悪影響を避け、インスタンスへの管理者権限を確保するためです。

Oktaアプリケーションの作成

まずOktaの開発者向けサイトで、新しいDeveloperアカウントにサインアップします。すでにアカウントを持っている場合は個人アカウントでログインします。

既存のアカウントでログインした場合は、Oktaのダッシュボードが表示されるので、右上の [Admin (管理)] ボタンをクリックします。

Oktaのアプリケーションダッシュボード

新しいDeveloperアカウントを作成した場合は、管理ダッシュボードにリダイレクトされます。

管理パネルが表示されたら、上部の [Applications (アプリケーション)] オプションをクリックします。

Oktaの管理ダッシュボード

アプリケーションページで [Add Application (アプリケーションの追加)] ボタンをクリックします。アプリケーションの種類として [Web (ウェブ)] を選択し、[Next (次へ)] ボタンをクリックします。

Oktaのアプリの種類

Oktaは、アプリケーションの承認とユーザーの認証それぞれに、OAuth 2OpenID Connect (OIDC) の両方を使用します。OpenID Connectの統合では、多数の一般的な言語フレームワーク内で組み込みのOIDCコネクタを使用でき、コールバックルートの処理、ログインおよびログアウト方法の提供、アプリケーションへのルートの保護によってアプリケーションとユーザーの管理が簡略化されます。

この初回の統合を簡略化するために、言語とフレームワークのOIDCコネクタにデフォルトのコールバックルートと設定を使用します。どの統合の種類を選択するかによって、構成設定が若干変わります。

以下の構成設定を使用して、アプリケーションの詳細を入力します。

  • 名前: 任意
  • 基本URI: http://localhost:3000/
  • ログインリダイレクトURI: http://localhost:3000/authorization-code/callback
  • ログアウトリダイレクトURI: http://localhost:3000/logout
  • 使用できる許可タイプ: [Authorization Code (承認コード)] のみを選択

Oktaアプリの構成

  • 名前: 任意
  • 基本URI: http://localhost:8080/
  • ログインリダイレクトURI: http://localhost:8080/authorization-code/callback
  • ログアウトリダイレクトURI: http://localhost:8080/logout
  • 使用できる許可タイプ: [Authorization Code (承認コード)] のみを選択

Oktaアプリの構成

  • 名前: 任意
  • 基本URI: http://127.0.0.1:5000/
  • ログインリダイレクトURI: http://127.0.0.1:5000/oidc/callback
  • ログアウトリダイレクトURI: http://127.0.0.1:5000/logout
  • 使用できる許可タイプ: [Authorization Code (承認コード)] のみを選択

Oktaアプリの構成

  • 名前: 任意
  • 基本URI: https://localhost:5001/
  • ログインリダイレクトURI: https://localhost:5001/authorization-code/callback
  • ログアウトリダイレクトURI: https://localhost:5001/logout
  • 使用できる許可タイプ: [Authorization Code (承認コード)] のみを選択

Oktaアプリの構成

前の手順が完了していません

最初に、手順1でお好みの言語/フレームワークを選択してください。

[Done (完了)] ボタンをクリックしてアプリケーションを作成し、アプリケーションの一般設定に移動します。

アプリケーション資格情報のコピー

次に、1つ前の手順で設定した構成ファイルを使用して、ファイル内にOktaのアプリケーション組織とアプリの詳細を追加します。

Oktaアプリケーションの情報はほとんどが一般設定ページにありますが、Okta組織を後方参照するために構成URIで使用されているOrg URLは例外です。Org URLを取得するには、Okta管理コンソールのダッシュボードに移動します。Org URLは画面の右上隅に表示されます。

前の手順で選択した言語とフレームワークに応じて、適切な構成ファイルを設定します。

OktaのOrg URL

  • 任意のエディタで、ローカルアプリケーションディレクトリ内のconfig.jsonを開きます。
  • 以下の行項目を、Oktaの構成情報で適宜更新します。

    • oktaClientId: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • oktaClientSecret: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • oktaOrgUrl: 管理ダッシュボードのメインページで右上から取得。
  • ファイルを保存します。

config.jsonファイルは次のようになります。

const oktaClientId = exports.oktaClientId = '0oa48567frkg5KW4x6';
const oktaClientSecret = exports.oktaClientSecret = 'cugDJy2ERfIQHDXv-j2134DfTTes-Sa3';
const oktaOrgUrl = exports.oktaOrgUrl = 'YOURDOMAIN.okta.com';
const oktaBaseUrl = exports.oktaBaseUrl = 'http://localhost:3000';
const oktaRedirect = exports.oktaRedirect = '/authorization-code/callback';
  • /src/main/resources/application.propertiesファイルを開き、以下の行を更新します。

    • okta.oauth2.issuer: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に/oauth2/defaultを付けたもの。たとえばOrg URLがhttps://dev-123456.okta.comの場合、この発行者文字列はhttps://dev-123456.okta.com/oauth2/defaultになります。
    • okta.oauth2.clientId: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • okta.oauth2.clientSecret: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
  • ファイルを保存します。

/src/main/resources/application.propertiesファイルは次のようになります。

okta.oauth2.redirect-uri=/authorization-code/callback
okta.oauth2.issuer=https://YOURDOMAIN.okta.com/oauth2/default
okta.oauth2.clientId=0oa48567frkg5KW4x6
okta.oauth2.clientSecret=cugDJy2ERfIQHDXv-j2134DfTTes-Sa3
security.oauth2.sso.loginPath=/authorization-code/callback

Python/Flaskの統合では、組織とアプリの標準的な構成情報に加え、追加の認証トークンが必要です。

認証トークンを作成するには、次の手順に従います。

  • Oktaの管理ダッシュボードの [API] -> [Token (トークン)] セクションに移動します。
  • [Create Token (トークンの作成)] ボタンをクリックします。
  • トークンの名前を入力し、[Create (作成)] をクリックします。
  • 生成されたトークンをコピーします。

次に、ローカルのアプリケーション構成ファイルを更新します。

  • 任意のエディタで、ローカルアプリケーションディレクトリ内のconfig.pyを開きます。
  • 以下の行項目を、Oktaの構成情報で適宜更新します。

    • okta_client_secret: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • okta_org_url: 管理ダッシュボードのメインページで右上から取得。
    • okta_auth_token: 上記で作成したトークン。
  • ファイルを保存します。

config.pyファイルは次のようになります。

okta_client_id = '0oa48567frkg5KW4x6'
okta_client_secret = 'cugDJy2ERfIQHDXv-j2134DfTTes-Sa3'
okta_org_url = 'http://YOURDOMAIN.okta.com'
okta_auth_token = '01KkTQTRfs1yKLr4Ojy26iqoIjK_4fHyq132Dr5T'
okta_callback_route = '/oidc/callback'

最後に、Flask構成ファイルを更新します。

  • 任意のエディタで、ローカルアプリケーションディレクトリ内のclient_secrets.jsonを開きます。
  • 以下の行項目を、Oktaの構成情報で適宜更新します。

    • client_id: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • client_secret: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • auth_uri: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に/oauth2/default/v1/authorizeを付けたもの。たとえばOrg URLがhttps://dev-123456.okta.comの場合、この発行者文字列はhttps://dev-123456.okta.com/oauth2/default/v1/authorizeになります。
    • token_uri: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に/oauth2/default/v1/tokenを付けたもの。たとえばOrg URLがhttps://dev-123456.okta.comの場合、この発行者文字列はhttps://dev-123456.okta.com/oauth2/default/v1/tokenになります。
    • issuer: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に/oauth2/defaultを付けたもの。たとえばOrg URLがhttps://dev-123456.okta.comの場合、この発行者文字列はhttps://dev-123456.okta.com/oauth2/defaultになります。
    • userinfo_uri: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に/oauth2/default/userinfoを付けたもの。たとえばOrg URLがhttps://dev-123456.okta.comの場合、この発行者文字列はhttps://dev-123456.okta.com/oauth2/default/userinfoになります。
  • ファイルを保存します。

client_secrets.jsonファイルは次のようになります。

{
  "web": {
    "client_id": "0oa48567frkg5KW4x6",
    "client_secret": "cugDJy2ERfIQHDXv-j2134DfTTes-Sa3",
    "auth_uri": "https://YOURDOMAIN.okta.com/oauth2/default/v1/authorize",
    "token_uri": "https://YOURDOMAIN.okta.com/oauth2/default/v1/token",
    "issuer": "https://YOURDOMAIN.okta.com/oauth2/default",
    "userinfo_uri": "https://YOURDOMAIN.okta.com/oauth2/default/userinfo",
    "redirect_uris": [
      "http://127.0.0.1:5000/oidc/callback"
    ]
  }
}
  • 任意のエディタで、ローカルアプリケーションディレクトリ内のStartup.csを開きます。
  • ConfigureServicesメソッド内の以下の行項目を、Oktaの構成情報で適宜更新します。

    • OktaDomain: 管理ダッシュボードのメインページで右上から取得。
    • ClientId: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
    • ClientSecret: アプリケーションの一般設定の [Client Credentials (クライアント資格情報)] セクションから取得。
  • ファイルを保存します。

ConfigureServicesメソッドは次のようになります。

services.AddControllersWithViews();
services.AddAuthentication(options =>
{
  options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
  options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
  options.DefaultChallengeScheme = OktaDefaults.MvcAuthenticationScheme;
})
.AddCookie()
.AddOktaMvc(new OktaMvcOptions
{
  OktaDomain = "https://YOURDOMAIN.okta.com",
  ClientId = "0oa48567frkg5KW4x6",
  ClientSecret = "cugDJy2ERfIQHDXv-j2134DfTTes-Sa3"
});

前の手順が完了していません

最初に、手順1でお好みの言語/フレームワークを選択してください。

ユーザーの作成

Oktaの設定における最後の手順では、アプリケーションへのログインに使用するテストユーザーを作成します。

  1. Oktaの管理ダッシュボードの [Users (ユーザー)] セクションに移動します。
  2. [Add Person (ユーザーの追加)] ボタンをクリックします。
  3. 適切なユーザー情報をすべて入力します。パスワードには [Set by admin (管理者が設定)] を選択し、ユーザーのパスワードを入力します。また、[User must change password on first login (ユーザーは初回ログイン時にパスワードの変更が必要)] オプションの選択を解除します。ログインにはユーザー名とパスワードを使用します。これらの設定はテスト目的のみで使用されるため、ユーザーの作成とセキュリティのベストプラクティスではありません。
  4. [Save (保存)] ボタンをクリックしてユーザーを作成します。

まとめ

  • Oktaアプリケーションを作成しました。
  • ローカルアプリケーションでOktaの構成情報を更新しました。
  • Oktaのテストユーザーを作成しました。