メインコンテンツまでスキップ
新しい友達のために:

Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloudオープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。

Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。

この記事では、Android (Kotlin / Java)Logto を使用して、Google Workspace enterprise SSO サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。

前提条件

  • 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
  • Android (Kotlin / Java) の基本的な知識。
  • 使用可能な Google Workspace enterprise SSO アカウント。

Create an application in Logto

Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。

あなたの ネイティブアプリ アプリケーションを作成するには、次の手順に従ってください:

  1. Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。 Get started
  2. 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "ネイティブアプリ" フレームワークをフィルタリングするか、"ネイティブアプリ" セクションをクリックします。"Android" フレームワークカードをクリックして、アプリケーションの作成を開始します。 Frameworks
  3. アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。

🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。

Integrate Android SDK

ヒント:

インストール

注記:

Logto Android SDK のサポートされている最小 Android API レベルはレベル 24 です。

Logto Android SDK をインストールする前に、Gradle プロジェクトのビルドファイルで mavenCentral() がリポジトリ設定に追加されていることを確認してください:

settings.gradle.kts
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}

Logto Android SDK を依存関係に追加します:

build.gradle.kts
dependencies {
implementation("io.logto.sdk:android:1.1.3")
}

SDK はインターネットアクセスが必要なため、次の権限を AndroidManifest.xml ファイルに追加する必要があります:

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<!-- インターネット権限を追加 -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- その他の設定... -->
</manifest>

LogtoClient の初期化

LogtoViewModel.kt を作成し、このビューモデルで LogtoClient を初期化します:

LogtoViewModel.kt
//...他のインポート
import io.logto.sdk.android.LogtoClient
import io.logto.sdk.android.type.LogtoConfig

class LogtoViewModel(application: Application) : AndroidViewModel(application) {
private val logtoConfig = LogtoConfig(
endpoint = "<your-logto-endpoint>",
appId = "<your-app-id>",
scopes = null,
resources = null,
usingPersistStorage = true,
)

private val logtoClient = LogtoClient(logtoConfig, application)

companion object {
val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
modelClass: Class<T>,
extras: CreationExtras
): T {
// extras から Application オブジェクトを取得
val application = checkNotNull(extras[APPLICATION_KEY])
return LogtoViewModel(application) as T
}
}
}
}

次に、MainActivity.kt のために LogtoViewModel を作成します:

MainActivity.kt
//...他のインポート
class MainActivity : AppCompatActivity() {
private val logtoViewModel: LogtoViewModel by viewModels { LogtoViewModel.Factory }
//...他のコード
}

リダイレクト URI の設定

Logto コンソールのアプリケーション詳細ページに切り替えましょう。リダイレクト URI io.logto.android://io.logto.sample/callback を追加し、「変更を保存」をクリックします。

Logto コンソールのリダイレクト URI

サインインとサインアウトの実装

注記:

logtoClient.signIn を呼び出す前に、Admin Console でリダイレクト URI が正しく設定されていることを確認してください。 :::

logtoClient.signIn を使用してユーザーをサインインし、logtoClient.signOut を使用してユーザーをサインアウトできます。

例えば、Android アプリでは次のようにします:

LogtoModelView.kt
//...他のインポートと共に
class LogtoViewModel(application: Application) : AndroidViewModel(application) {
// ...他のコード

// 認証 (Authentication) 状態を監視するライブデータを追加
private val _authenticated = MutableLiveData(logtoClient.isAuthenticated)
val authenticated: LiveData<Boolean>
get() = _authenticated

fun signIn(context: Activity) {
logtoClient.signIn(context, "io.logto.android://io.logto.sample/callback") { logtoException ->
logtoException?.let { println(it) }
// ライブデータを更新
_authenticated.postValue(logtoClient.isAuthenticated)
}
}

fun signOut() {
logtoClient.signOut { logtoException ->
logtoException?.let { println(it) }
// ライブデータを更新
_authenticated.postValue(logtoClient.isAuthenticated)
}
}
}

次に、アクティビティ内で signInsignOut メソッドを呼び出します:

MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
//...他のコード

// レイアウトに id "sign_in_button" を持つボタンがあると仮定
val signInButton = findViewById<Button>(R.id.sign_in_button)
signInButton.setOnClickListener {
logtoViewModel.signIn(this)
}

// レイアウトに id "sign_out_button" を持つボタンがあると仮定
val signOutButton = findViewById<Button>(R.id.sign_out_button)
signOutButton.setOnClickListener {
if (logtoViewModel.authenticated) { // ユーザーが認証 (Authentication) されているか確認
logtoViewModel.signOut()
}
}

// 認証 (Authentication) 状態を監視して UI を更新
logtoViewModel.authenticated.observe(this) { authenticated ->
if (authenticated) {
// ユーザーは認証 (Authentication) されています
signInButton.visibility = View.GONE
signOutButton.visibility = View.VISIBLE
} else {
// ユーザーは認証 (Authentication) されていません
signInButton.visibility = View.VISIBLE
signOutButton.visibility = View.GONE
}
}

}
}

チェックポイント: アプリケーションをテストする

これで、アプリケーションをテストできます:

  1. アプリケーションを実行すると、サインインボタンが表示されます。
  2. サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
  3. サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
  4. サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。

Add Google Workspace enterprise SSO connector

アクセス管理を簡素化し、大規模なクライアント向けにエンタープライズレベルの保護を得るために、Android をフェデレーテッドアイデンティティプロバイダーとして接続します。Logto エンタープライズシングルサインオン (SSO) コネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。

エンタープライズ SSO コネクターを追加するには、次の手順に従ってください:

  1. Logto コンソール > エンタープライズ SSO に移動します。
SSO ページ
  1. 「エンタープライズコネクターを追加」ボタンをクリックし、SSO プロバイダーのタイプを選択します。Microsoft Entra ID (Azure AD)、Google Workspace、Okta の事前構築されたコネクターから選択するか、標準の OpenID Connect (OIDC) または SAML プロトコルを使用してカスタム SSO 接続を作成します。
  2. 一意の名前を指定します(例:Acme Company の SSO サインイン)。
SSO プロバイダーを選択
  1. 「接続」タブで IdP と接続を構成します。各コネクタータイプのガイドを上記で確認してください。
SSO 接続
  1. 「体験 (Experience)」タブで SSO 体験と企業の メールドメイン をカスタマイズします。SSO 対応のメールドメインでサインインするユーザーは、SSO 認証にリダイレクトされます。
SSO 体験
  1. 変更を保存します。

Set up Google Cloud Platform

ステップ 1: Google Cloud Platform で新しいプロジェクトを作成する

Google Workspace を認証 (Authentication) プロバイダーとして使用する前に、Google API Console でプロジェクトを設定し、OAuth 2.0 資格情報を取得する必要があります。すでにプロジェクトがある場合は、このステップをスキップできます。そうでない場合は、Google 組織の下で新しいプロジェクトを作成してください。

新しい OIDC 資格情報を作成するには、アプリケーションの同意画面を設定する必要があります。

  1. OAuth 同意画面 ページに移動し、Internal ユーザータイプを選択します。これにより、OAuth アプリケーションは組織内のユーザーのみが利用可能になります。
Google Workspace 同意画面のユーザータイプ
  1. ページの指示に従って Consent Screen 設定を入力します。次の最低限の情報を提供する必要があります:
  • アプリケーション名:アプリケーションの名前です。同意画面に表示されます。
  • サポートメール:アプリケーションのサポートメールです。同意画面に表示されます。
Google Workspace 同意画面の設定
  1. アプリケーションの Scopes を設定します。ユーザーのアイデンティティ情報とメールアドレスを IdP から適切に取得するために、Logto SSO コネクターは IdP から次のスコープを付与する必要があります:
Google Workspace 同意画面のスコープ
  • openid:このスコープは OIDC 認証 (Authentication) に必要です。ID トークンを取得し、IdP の userInfo エンドポイントにアクセスするために使用されます。
  • profile:このスコープはユーザーの基本的なプロフィール情報にアクセスするために必要です。
  • email:このスコープはユーザーのメールアドレスにアクセスするために必要です。

Save ボタンをクリックして同意画面の設定を保存します。

ステップ 3: 新しい OAuth 資格情報を作成する

Credentials ページに移動し、Create Credentials ボタンをクリックします。ドロップダウンメニューから OAuth client ID オプションを選択して、アプリケーション用の新しい OAuth 資格情報を作成します。

Google Workspace create credentials

次の情報を入力して OAuth 資格情報の設定を続行します:

Google Workspace credentials config
  1. アプリケーションタイプとして Web application を選択します。
  2. クライアントアプリケーションの Name を入力します。例えば、Logto SSO Connector。これにより、将来的に資格情報を識別するのに役立ちます。
  3. Authorized redirect URIs に Logto のコールバック URI を入力します。これは、Google が認証 (Authentication) に成功した後にユーザーのブラウザをリダイレクトする URI です。ユーザーが IdP での認証に成功した後、IdP はユーザーのブラウザをこの指定された URI に認可 (Authorization) コードと共にリダイレクトします。Logto は、この URI から受け取った認可 (Authorization) コードに基づいて認証 (Authentication) プロセスを完了します。
  4. Authorized JavaScript origins に Logto コールバック URI のオリジンを入力します。これにより、あなたの Logto アプリケーションのみが Google OAuth サーバーにリクエストを送信できるようになります。
  5. Create ボタンをクリックして OAuth 資格情報を作成します。

ステップ 4: クライアント資格情報で Logto コネクターを設定する

OAuth 資格情報の作成に成功すると、クライアント ID とクライアントシークレットが表示されるプロンプトモーダルが表示されます。

Google Workspace create credentials

Client IDClient secret をコピーし、Logto の SSO コネクターの Connection タブの対応するフィールドに入力します。

これで、Logto 上で Google Workspace SSO コネクターの設定が完了しました。

ステップ 5: 追加のスコープ (オプション)

Scope フィールドを使用して、OAuth リクエストに追加のスコープを追加します。これにより、Google OAuth サーバーからより多くの情報を要求できます。詳細については、 Google OAuth Scopes ドキュメントを参照してください。

カスタムスコープ設定に関係なく、Logto は常に openidprofile、および email スコープを IdP に送信します。これは、Logto がユーザーのアイデンティティ情報とメールアドレスを適切に取得できるようにするためです。

ステップ 6: メールドメインを設定し、SSO コネクターを有効にする

Logto のコネクターの SSO experience タブで、組織の email domains を提供してください。これにより、これらのユーザーに対する認証 (Authentication) 方法として SSO コネクターが有効になります。

指定されたドメインのメールアドレスを持つユーザーは、唯一の認証 (Authentication) 方法として SSO コネクターを使用するようにリダイレクトされます。

Google Workspace SSO コネクターの詳細については、 Google OpenID Connector をご確認ください。

Save your configuration

Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Google Workspace enterprise SSO コネクターが利用可能になります。

Enable Google Workspace enterprise SSO connector in Sign-in Experience

エンタープライズコネクターを個別に設定する必要はありません。Logto は、ワンクリックでアプリケーションに SSO 統合を簡素化します。

  1. 移動先: Console > サインイン体験 > サインアップとサインイン
  2. 「エンタープライズシングルサインオン (SSO)」トグルを有効にします。
  3. 変更を保存します。

有効にすると、サインインページに「シングルサインオン (SSO)」ボタンが表示されます。SSO が有効なメールドメインを持つエンタープライズユーザーは、エンタープライズアイデンティティプロバイダー (IdP) を使用してサービスにアクセスできます。

メールドメインを介して SSO サインインを自動検出 リンクボタンを手動でクリックして SSO サインインに移動

SP 主導の SSO や IdP 主導の SSO を含む SSO ユーザー体験について詳しくは、ユーザーフロー: エンタープライズシングルサインオン (SSO) を参照してください。

Testing and Validation

Android (Kotlin / Java) アプリに戻ります。これで Google Workspace enterprise SSO を使用してサインインできるはずです。お楽しみください!

Further readings

エンドユーザーフロー:Logto は、MFA やエンタープライズシングルサインオン (SSO) を含む即時使用可能な認証 (Authentication) フローを提供し、アカウント設定、セキュリティ検証、マルチテナント体験の柔軟な実装のための強力な API を備えています。

認可 (Authorization):認可 (Authorization) は、ユーザーが認証 (Authentication) された後に行えるアクションやアクセスできるリソースを定義します。ネイティブおよびシングルページアプリケーションの API を保護し、ロールベースのアクセス制御 (RBAC) を実装する方法を探ります。

組織 (Organizations):特にマルチテナント SaaS や B2B アプリで効果的な組織機能は、テナントの作成、メンバー管理、組織レベルの RBAC、およびジャストインタイムプロビジョニングを可能にします。

顧客 IAM シリーズ:顧客(または消費者)アイデンティティとアクセス管理に関する連続ブログ投稿で、101 から高度なトピックまでを網羅しています。