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

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

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

この記事では、iOS (Swift)Logto を使用して、Naver サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。

前提条件

  • 実行中の Logto インスタンス。始めるには 紹介ページ をご覧ください。
  • iOS (Swift) の基本的な知識。
  • 使用可能な Naver アカウント。

Logto でアプリケーションを作成する

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

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

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

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

iOS (Swift) SDK を統合する

Logto SDK を依存関係として追加する

次の URL を使用して、Swift Package Manager に Logto SDK を依存関係として追加します。

https://github.com/logto-io/swift.git

Xcode 11 以降、Swift パッケージを直接インポート できます。追加のツールは必要ありません。

技術的な問題により、現在 CarthageCocoaPods はサポートしていません。

Carthage

Carthage は ビルドに xcodeproj ファイルを必要とします が、ネイティブソーシャルプラグインのバイナリターゲットを使用しているため、swift package generate-xcodeproj は失敗を報告します。後で回避策を見つけるようにします。

CocoaPods

CocoaPods は ローカル依存関係 とモノレポをサポートしていないため、このリポジトリの .podspec を作成するのは難しいです。

LogtoClient を初期化する

LogtoConfig オブジェクトを使用して LogtoClient インスタンスを作成することで、クライアントを初期化します。

ContentView.swift
import Logto
import LogtoClient

let config = try? LogtoConfig(
endpoint: "<your-logto-endpoint>", // 例: http://localhost:3001
appId: "<your-app-id>"
)
let client = LogtoClient(useConfig: config)
備考:

デフォルトでは、ID トークンやリフレッシュ トークンのような資格情報を Keychain に保存します。したがって、ユーザーは戻ってきたときに再度サインインする必要はありません。

この動作をオフにするには、usingPersistStoragefalse に設定します:

let config = try? LogtoConfig(
// ...
usingPersistStorage: false
)

サインイン

詳細に入る前に、エンドユーザーの体験について簡単に説明します。サインインプロセスは次のように簡略化できます:

  1. あなたのアプリがサインインメソッドを呼び出します。
  2. ユーザーは Logto のサインインページにリダイレクトされます。ネイティブアプリの場合、システムブラウザが開かれます。
  3. ユーザーがサインインし、あなたのアプリにリダイレクトされます(リダイレクト URI として設定されています)。

リダイレクトベースのサインインについて

  1. この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
  2. 複数のアプリがある場合、同じアイデンティティプロバイダー (Logto) を使用できます。ユーザーがあるアプリにサインインすると、Logto は別のアプリにアクセスした際に自動的にサインインプロセスを完了します。

リダイレクトベースのサインインの理論と利点について詳しく知るには、Logto サインイン体験の説明を参照してください。


リダイレクト URI の設定

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

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

iOS SDK のリダイレクト URI は内部使用のみです。コネクターが要求するまで、カスタム URL スキーム を追加する必要は ありません

サインインとサインアウト

注記:

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

client.signInWithBrowser(redirectUri:) を使用してユーザーをサインインし、client.signOut() を使用してユーザーをサインアウトできます。

例えば、SwiftUI アプリでは:

ContentView.swift
struct ContentView: View {
@State var isAuthenticated: Bool

init() {
isAuthenticated = client.isAuthenticated
}

var body: some View {
VStack {
if isAuthenticated {
Button("Sign Out") {
Task { [self] in
await client.signOut()
isAuthenticated = false
}
}
} else {
Button("Sign In") {
Task { [self] in
do {
try await client.signInWithBrowser(redirectUri: "${
props.redirectUris[0] ?? 'io.logto://callback'
}")
isAuthenticated = true
} catch let error as LogtoClientErrors.SignIn {
// サインイン中にエラーが発生しました
} catch {
// その他のエラー
}
}
}
}
}
}
}

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

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

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

Naver コネクターを追加する

迅速なサインインを可能にし、ユーザーのコンバージョンを向上させるために、アイデンティティプロバイダー (IdP) として iOS (Swift) を接続します。Logto ソーシャルコネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。

ソーシャルコネクターを追加するには、次の手順に従ってください:

  1. Console > Connectors > Social Connectors に移動します。
  2. 「ソーシャルコネクターを追加」をクリックし、「Naver」を選択します。
  3. README ガイドに従い、必要なフィールドを完了し、設定をカスタマイズします。

Connector tab

注記:

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。

Naver login を設定する

現在、開発者サイトは韓国語のみサポートしています

現在、Naver Developers サイトは韓国語のみをサポートしています。翻訳ツールの使用を検討してください。

本番環境について

  • 本番環境では、Naver チームからのレビューを受ける必要があります。 そうでない場合、登録されたユーザーのみがサインインできます。
    • 맴버관리(Member Manage) メニューからテスターを追加できます。
  • レビューを受けるには、アプリケーションプロジェクト設定の API 설정(API Setting) から 애플리케이션 개발 상태(Application Devlopment Status) を確認してください。

Naver Developers でプロジェクトを設定する

  • Naver Developers を訪問し、Naver アカウントでサインインします。
  • メニューから Application -> 어플리케이션 등록 をクリックして新しいプロジェクトを作成します。
  • 以下の手順に従ってアプリケーションを作成します。

アプリケーション名 (어플리케이션 이름)

  • 어플리케이션 이름 にアプリケーション名を入力します(この名前はユーザーがサインインする際に表示されます)。

API 使用 (사용 API)

  • 사용 API(API Usage)네이버 로그인(Naver Login) を選択します。
  • 권한(Role) から 이메일 주소(Email Address), 별명(Nickname), 프로필 사진(Profile Image)필수(Neccessary) としてチェックします(これらのオプションをオプションとして 추가(Add) としてチェックすることもできますが、ユーザーから情報を取得することはできません)。

サインインオープン API サービス環境 (로그인 오픈 API 서비스 환경)

  • 로그인 오픈 API 서비스 환경(Sign in Open API Service Environment) には、PC웹(PC Web)모바일웹(Mobile Web) の 2 つの環境を追加します。

PC Web (PC 웹)

Mobile Web (Mobile 웹)

注意:

connector_id は Logto 管理コンソールのコネクター詳細ページの上部バーで確認できます。

Logto の設定

設定タイプ

名前タイプ
clientIdstring
clientSecretstring

clientId

clientId はプロジェクトの Client ID です。 (Naver developers のプロジェクトの 애플리케이션 정보(Application Info) から確認できます。)

clientSecret

clientSecret はプロジェクトの Client Secret です。 (Naver developers のプロジェクトの 애플리케이션 정보(Application Info) から確認できます。)

設定を保存する

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

サインイン体験で Naver コネクターを有効にする

ソーシャルコネクターを正常に作成すると、サインイン体験で「Naver で続行」ボタンとして有効にすることができます。

  1. コンソール > サインイン体験 > サインアップとサインイン に移動します。
  2. (オプション)ソーシャルログインのみが必要な場合は、サインアップ識別子に「該当なし」を選択します。
  3. 設定済みの Naver コネクターを「ソーシャルサインイン」セクションに追加します。

サインイン体験タブ

テストと検証

iOS (Swift) アプリに戻ります。これで Naver を使用してサインインできるはずです。お楽しみください!

さらなる読み物

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

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

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

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