検索
ホームページウェブフロントエンドjsチュートリアルアプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

この記事は、もともとOkta Developer Blogで公開されました。 SitePointを可能にしてくれたパートナーをサポートしてくれてありがとう。 Angular(以前はAngular 2.0と呼ばれていた)は、最新のシングルページアプリを構築する最も強力な方法の1つになりつつあります。コア強度は、再利用可能なコンポーネントを構築することにAngularの焦点であり、アプリケーションのさまざまな懸念を分離するのに役立ちます。たとえば、認証を取得してください:構築するのは苦痛ですが、コンポーネントにラップすると、アプリケーション全体で認証ロジックを再利用できます。 Angular CLIにより、新しいコンポーネント、さらにはプロジェクト全体を簡単に足場にすることができます。 Angular CLIを使用してAngular Codeをすばやく生成していない場合は、おやつを求めています!キーテイクアウト

すぐに足を踏み入れて、角CLIを使用して新しい角度アプリケーションを実行し、開発効率を高めます。

OKTAとOpenID Connectアプリをセットアップし、安全なユーザー管理を確保することにより、認証をシームレスに統合します。

Angularの強力なコンポーネントシステムを利用して、検索機能を追加して編集してユーザーエクスペリエンスを強化します。

ルーティングを利用してアプリケーション内のナビゲーションを管理し、よりスムーズなユーザーフローとより良い状態管理を可能にします。

フォーム検証を実装して、データの整合性を確保し、フィードバックを提供し、全体的な使いやすさを向上させます。 Angular's AuthGuardを使用して、機密情報を保護し、認証を実施するために、Angular's AuthGuardを使用してアプリケーションルートを安全に保護します。

    角度アプリケーションを作成します
  • ヒント:Angularアプリケーションの構築をスキップして認証を追加する場合は、NG-DEMOプロジェクトをクローンしてから、OKTAセクションでOpenID Connectアプリの作成をスキップできます。 >
  • 必要なもの
  • 約20分
  • お気に入りのテキストエディターまたはIDE。 Intellijのアイデアをお勧めします
node.jsとnpmインストール。 nvm

を使用することをお勧めします

Angular CLIがインストールされました。 Angular CLIがインストールされていない場合は、npmインストールを使用してインストールします-g @angular/cli

NG新しいコマンドを使用して新しいプロジェクトを作成します:

<span>git clone https://github.com/mraible/ng-demo.git
</span>

これにより、NG-DEMOプロジェクトが作成され、NPMインストールが実行されます。完了するまでに約1分かかりますが、接続速度によって異なる場合があります。

    ng -versionで使用しているAngular CLIのバージョンを見ることができます。
  • 角度アプリケーションを実行します
  • プロジェクトは、WebPack Dev Serverで構成されています。それを開始するには、NG-DEMOディレクトリにいることを確認して、次に実行してください。
<span>git clone https://github.com/mraible/ng-demo.git
</span>

http:// localhost:4200で以下のような画面が表示されます。

アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ新しいプロジェクトのテストが合格し、NGテストを実行することを確認できます。

検索機能を追加
ng new ng-demo

検索機能を追加するには、IDEまたはお気に入りのテキストエディターでプロジェクトを開きます。 Intellijのアイデアについては、ファイル>新しいプロジェクト> Static Webを使用して、NG-DEMOディレクトリを指してください。

端末ウィンドウで、プロジェクトのディレクトリにCDを入れて、次のコマンドを実行します。これにより、検索コンポーネントが作成されます

src/app/search/search.component.htmlを開き、デフォルトのhtmlを次のものに置き換えます。

Angularのルータードキュメントは、生成したばかりのSearchComponentへのルートをセットアップするために必要な情報を提供します。簡単な要約を次に示します:

<span>[mraible:~/dev] $ ng new ng-demo </span>installing ng create .editorconfig create README.md create src/app/app.component.css create src/app/app.component.html create src/app/app.component.spec.ts create src/app/app.component.ts create src/app/app.module.ts create src/assets/.gitkeep create src/environments/environment.prod.ts create src/environments/environment.ts create src/favicon.ico create src/index.html create src/main.ts create src/polyfills.ts create src/styles.css create src/test.ts create src/tsconfig.app.json create src/tsconfig.spec.json create src/typings.d.ts create .angular-cli.json create e2e/app.e2e-spec.ts create e2e/app.po.ts create e2e/tsconfig.e2e.json create .gitignore create karma.conf.js create package.json create protractor.conf.js create tsconfig.json create tslint.json Successfully initialized git. Installing packages <span>for tooling via npm. </span>Installed packages <span>for tooling via npm. </span>You can <span><span>`ng set --global packageManager=yarn`</span>. </span>Project <span>'ng-demo' successfully created. </span><span>[mraible:~] 46s $ </span>にインポートします

タグを追加してルートを表示します。

$ ng <span>--version
</span>    _                      _                 ____ _     ___
   / <span>\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
</span>  / △ <span>\ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
</span> / ___ <span>\| | | | (_| | |_| | | (_| | |      | |___| |___ | |
</span>/_/   <span>\_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
</span>               <span>|___/
</span>@angular/cli: <span>1.3.2
</span>node: <span>8.4.0
</span>os: darwin x64
ルーティングセットアップがあるので、検索機能の書き込みを続けることができます。

まだNGサーブランニングがある場合、ブラウザは自動的に更新する必要があります。そうでない場合は、http:// localhost:4200に移動します。空白の画面が表示される可能性があります。 JavaScriptコンソールを開くと、問題が表示されます

これを解決するには、src/app/app.module.tsを開き、@ngmoduleのインポートとしてformsmoduleを追加してください:

ng serve
検索フォームが表示されるはずです。

このコンポーネントにCSSを追加する場合は、src/app/search/search.component.cssを開き、CSSを追加します。たとえば、
$ ng <span>test
</span><span>...
</span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
</span>

このセクションでは、Angular CLIを使用した基本的な角度アプリケーションに新しいコンポーネントを生成する方法を示しました。次のセクションでは、JSONファイルとLocalStorageを作成して使用して偽のAPIを作成する方法を示します。

検索結果を取得するには、JSONファイルにHTTPリクエストを作成するSearchServiceを作成します。新しいサービスを生成することから始めます。

アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

生成されたSearch.service.tsとそのテストをApp/共有/検索に移動します。このディレクトリを作成する必要があります。

$ ng g component search
installing component
  create src/app/search/search.component.css
  create src/app/search/search.component.html
  create src/app/search/search.component.spec.ts
  create src/app/search/search.component.ts
  update src/app/app.module.ts

SRC/Assets/Data/People.jsonを作成して、データを保持します

アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップsrc/app/shared/search/search.service.tsを変更し、そのコンストラクターの依存関係としてHTTPを提供します。この同じファイルで、すべての人を収集するためにgetall()メソッドを作成します。また、JSONがマーシャリングされる住所と個人のクラスを定義します。

これらのクラスをコンポーネントで消費できるようにするには、src/app/shared/index.tsを編集して、次を追加します。
<span>git clone https://github.com/mraible/ng-demo.git
</span>
このファイルを作成する理由は、個々のクラスを別々の行にインポートする必要があるのではなく、単一行に複数のクラスをインポートできるようにするためです。

クエリと検索の変数を追加できるようになりました。あなたがそこにいる間、コンストラクターを変更してSearchServiceを注入します。

ng new ng-demo
その後、Search()メソッドを実装して、サービスのgetAll()メソッドを呼び出します。

この時点で、ブラウザのコンソールに次のメッセージが表示される可能性があります。
<span>[mraible:~/dev] $ ng new ng-demo
</span>installing ng
  create .editorconfig
  create README.md
  create src/app/app.component.css
  create src/app/app.component.html
  create src/app/app.component.spec.ts
  create src/app/app.component.ts
  create src/app/app.module.ts
  create src/assets/.gitkeep
  create src/environments/environment.prod.ts
  create src/environments/environment.ts
  create src/favicon.ico
  create src/index.html
  create src/main.ts
  create src/polyfills.ts
  create src/styles.css
  create src/test.ts
  create src/tsconfig.app.json
  create src/tsconfig.spec.json
  create src/typings.d.ts
  create .angular-cli.json
  create e2e/app.e2e-spec.ts
  create e2e/app.po.ts
  create e2e/tsconfig.e2e.json
  create .gitignore
  create karma.conf.js
  create package.json
  create protractor.conf.js
  create tsconfig.json
  create tslint.json
Successfully initialized git.
Installing packages <span>for tooling via npm.
</span>Installed packages <span>for tooling via npm.
</span>You can <span><span>`ng set --global packageManager=yarn`</span>.
</span>Project <span>'ng-demo' successfully created.
</span><span>[mraible:~] 46s $
</span>

上から「プロバイダーなし」エラーを修正するには、app.module.tsを更新してSearchServiceをインポートし、プロバイダーのリストにサービスを追加します。 SearchServiceはHTTPに依存するため、HTTPModuleもインポートする必要があります。

$ ng <span>--version
</span>    _                      _                 ____ _     ___
   / <span>\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
</span>  / △ <span>\ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
</span> / ___ <span>\| | | | (_| | |_| | | (_| | |      | |___| |___ | |
</span>/_/   <span>\_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
</span>               <span>|___/
</span>@angular/cli: <span>1.3.2
</span>node: <span>8.4.0
</span>os: darwin x64
[検索]ボタンをクリックすると動作するはずです。結果の見栄えを良くするには、
タグを削除し、src/app/search/search.component.htmlの
に置き換えます。

ng serve
今では、検索結果の方が良くなりました。

$ ng <span>test
</span><span>...
</span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
</span>
しかし、待ってください、あなたはまだ検索機能を持っていません!検索機能を追加するには、SearchServiceに検索()メソッドを追加します。

次に、Query変数を使用してこのメ​​ソッドを呼び出すためにSearchComponentをリファクタリングします。
$ ng g component search
installing component
  create src/app/search/search.component.css
  create src/app/search/search.component.html
  create src/app/search/search.component.spec.ts
  create src/app/search/search.component.ts
  update src/app/app.module.ts

今度は、検索結果は入力するクエリ値によってフィルタリングされます。

このセクションでは、検索結果を取得して表示する方法を示しました。次のセクションでは、これに基づいて、レコードを編集および保存する方法を示します。
<span><span><span><h2 id="gt">></h2></span>Search<span><span></span>></span>
</span><span><span><span><form>></form></span>
</span>  <span><span><span><input> type<span>="search"</span> name<span>="query"</span> [(ngModel)]<span>="query"</span> (keyup.enter)<span>="search()"</span>></span>
</span>  <span><span><span><button> type<span>="button"</span> (click)<span>="search()"</span>></button></span>Search<span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span><pre class="brush:php;toolbar:false">>
{{searchResults | json}}> 編集機能を追加

src/app/search/search.component.htmlを変更して、人を編集するためのリンクを追加します。 アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

次のコマンドを実行して、editComponentを生成します

import { Routes, RouterModule } from '@angular/router'; const appRoutes: Routes = [ {path: 'search', component: SearchComponent}, {path: '', redirectTo: '/search', pathMatch: 'full'} ]; @NgModule({ ... imports: [ ... RouterModule.forRoot(appRoutes) ] ... }) export class AppModule { } でこのコンポーネントのルートを追加します

src/app/edit/edit.component.htmlを更新して、編集可能なフォームを表示します。ほとんどの要素にID属性を追加したことに気付くかもしれません。これは、分度器との統合テストを作成するときに物事を簡単にするためです。
<span><span><span><h1 id="gt">></h1></span>Welcome to {{title}}!<span><span></span>></span>
</span><span><!-- Routed views go here -->
</span><span><span><span><router-outlet>></router-outlet></span><span><span></span>></span>
</span></span></span>

editComponentを変更してモデルとサービスのクラスをインポートし、SearchServiceを使用してデータを取得します。

SearchServiceを変更して、IDで人を見つける機能を含み、保存します。そこにいる間に、LocalStorageの更新されたオブジェクトに注意するように検索()メソッドを変更してください。

この時点で、人を検索して情報を更新できるはずです。アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ SRC/APP/EDIT/EDIT.COMPONENT.HTMLの

このURLを実行するときにSearchComponentが検索を自動的に実行しないため、次のロジックを追加してコンストラクターに追加します。
<span>git clone https://github.com/mraible/ng-demo.git
</span>

このサブスクリプションをクリーンアップするには、ondestroyを実装してNgondestroyメソッドを定義する必要があります。

ng new ng-demo
これらすべての変更を行った後、人の情報を検索/編集/更新できるはずです。それが機能する場合 - いい仕事!

フォーム検証
<span>[mraible:~/dev] $ ng new ng-demo
</span>installing ng
  create .editorconfig
  create README.md
  create src/app/app.component.css
  create src/app/app.component.html
  create src/app/app.component.spec.ts
  create src/app/app.component.ts
  create src/app/app.module.ts
  create src/assets/.gitkeep
  create src/environments/environment.prod.ts
  create src/environments/environment.ts
  create src/favicon.ico
  create src/index.html
  create src/main.ts
  create src/polyfills.ts
  create src/styles.css
  create src/test.ts
  create src/tsconfig.app.json
  create src/tsconfig.spec.json
  create src/typings.d.ts
  create .angular-cli.json
  create e2e/app.e2e-spec.ts
  create e2e/app.po.ts
  create e2e/tsconfig.e2e.json
  create .gitignore
  create karma.conf.js
  create package.json
  create protractor.conf.js
  create tsconfig.json
  create tslint.json
Successfully initialized git.
Installing packages <span>for tooling via npm.
</span>Installed packages <span>for tooling via npm.
</span>You can <span><span>`ng set --global packageManager=yarn`</span>.
</span>Project <span>'ng-demo' successfully created.
</span><span>[mraible:~] 46s $
</span>

気付くかもしれないことの1つは、フォームの入力要素をクリアして保存できることです。少なくとも、名前フィールドが必要です。それ以外の場合は、検索結果をクリックするものは何もありません。

名前を必要とするには、edit.component.htmlを変更して、

また、すべてを要素でラップする必要があります。

タグの後に

を追加し、最後のの前に閉じます。また、フォームに(ngsubmit)ハンドラーを追加し、保存ボタンを通常の送信ボタンにするように変更する必要があります。

これらの変更を行った後、必要な属性を持つフィールドが必要になります。

このスクリーンショットでは、アドレスフィールドが空白になっていることに気付くかもしれません。これは、コンソールのエラーによって説明されます
$ ng <span>--version
</span>    _                      _                 ____ _     ___
   / <span>\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
</span>  / △ <span>\ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
</span> / ___ <span>\| | | | (_| | |_| | | (_| | |      | |___| |___ | |
</span>/_/   <span>\_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
</span>               <span>|___/
</span>@angular/cli: <span>1.3.2
</span>node: <span>8.4.0
</span>os: darwin x64

修正するには、すべてのアドレスフィールドに名前属性を追加します。たとえば、

ng serve

今ではすべてのフィールドに値が表示され、名前が必要です。

アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

ブラウザに頼る代わりに独自の検証メッセージを提供する場合は、次の手順を完了します。

$ ng <span>test
</span><span>...
</span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
</span>
ngnativeValidateを削除し、#editform = "ngform"を要素に追加します

#name = "ngmodel"を要素に追加します。

$ ng g component search
installing component
  create src/app/search/search.component.css
  create src/app/search/search.component.html
  create src/app/search/search.component.spec.ts
  create src/app/search/search.component.ts
  update src/app/app.module.ts
[disabled] = "!editform.form.valid"を

save

button。アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップに追加します

[名前]フィールドの下に次のものを追加して、検証エラーを表示します。

  1. フォームと検証の詳細については、Angular Formsドキュメントを参照してください。 Okta
  2. でOpenID Connectアプリを作成します
  3. OpenID Connect(OIDC)は、OAUTH 2.0プロトコルの上に構築されています。これにより、クライアントはユーザーの身元を確認し、基本的なプロファイル情報を取得できます。詳細については、https://openid.net/connect。
  4. を参照してください
  5. ユーザー認証のためにOKTAを統合するには、最初にOIDCアプリケーションを登録して作成する必要があります。

    OKTAアカウントにログインするか、持っていない場合は作成します。アプリケーションに移動し、[アプリケーションの追加]ボタンをクリックします。スパを選択し、[次へ]をクリックします。次のページで、http:// localhost:4200をベースURI、ログインリダイレクトURI、およびログアウトリダイレクトURIとして指定します。 [完了]をクリックすると、次のような設定が表示されます。

    アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップManfred Steyerのプロジェクトをインストールして、NPMを使用してOAuth 2とOpenID Connectサポートを追加します。

    src/app/app.component.tsを変更してOauthServiceをインポートし、OKTAアプリケーションの設定を使用するようにアプリを構成します。
    <span>git clone https://github.com/mraible/ng-demo.git
    </span>

    src/app/home/home.component.tsを作成し、ログインとログアウトボタンを持つように構成します。
    ng new ng-demo
    

    src/app/shared/auth/auth.guard.service.tsを作成します。ユーザーが認証されていない場合は、ホームコンポーネントに移動します。

    <span>[mraible:~/dev] $ ng new ng-demo </span>installing ng create .editorconfig create README.md create src/app/app.component.css create src/app/app.component.html create src/app/app.component.spec.ts create src/app/app.component.ts create src/app/app.module.ts create src/assets/.gitkeep create src/environments/environment.prod.ts create src/environments/environment.ts create src/favicon.ico create src/index.html create src/main.ts create src/polyfills.ts create src/styles.css create src/test.ts create src/tsconfig.app.json create src/tsconfig.spec.json create src/typings.d.ts create .angular-cli.json create e2e/app.e2e-spec.ts create e2e/app.po.ts create e2e/tsconfig.e2e.json create .gitignore create karma.conf.js create package.json create protractor.conf.js create tsconfig.json create tslint.json Successfully initialized git. Installing packages <span>for tooling via npm. </span>Installed packages <span>for tooling via npm. </span>You can <span><span>`ng set --global packageManager=yarn`</span>. </span>Project <span>'ng-demo' successfully created. </span><span>[mraible:~] 46s $ </span>

    src /app /app.module.tsでoauthmoduleをインポートし、新しいホームコンポーネントを構成し、 /searchをロックし、authguardでルートを編集します。
    $ ng <span>--version
    </span>    _                      _                 ____ _     ___
       / <span>\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
    </span>  / △ <span>\ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
    </span> / ___ <span>\| | | | (_| | |_| | | (_| | |      | |___| |___ | |
    </span>/_/   <span>\_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
    </span>               <span>|___/
    </span>@angular/cli: <span>1.3.2
    </span>node: <span>8.4.0
    </span>os: darwin x64
    

    これらの変更を行った後、NGサーブを実行してログインボタンを表示できるはずです。

    ng serve
    
    ログインボタンをクリックして、OKTAアプリケーションで構成されている人の1人でサインインします。

    ログインした後、[
    $ ng <span>test
    </span><span>...
    </span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
    </span>
    検索] をクリックして、人々の情報を表示できます。 アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップそれが機能する場合 - 素晴らしい!アプリで独自のログインフォームを構築する場合は、oauthServiceを使用してOkta Auth SDKを使用する方法を学び続けます。 OKTA AUTH SDK

    による

    認証 アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップOKTA Auth SDKは、OTKAの認証APIおよびOAUTH 2.0 APIの上に構築され、JavaScriptを使用して完全にブランドのサインインエクスペリエンスを作成できます。 NPM:

    を使用してインストールします このライブラリのメインJavaScriptファイルへの参照を.Angular-cli.json:

    アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ このセクションのコンポーネントは、ブートストラップCSSクラスを使用します。 Bootstrap 4をインストールします

    src/styles.cssを変更して、BootstrapのCSSファイルへの参照を追加します。

    src/app/app.component.htmlを更新して、Navbarおよびグリッドシステムにブートストラップクラスを使用します。

    src/app/shared/auth/okta.auth.wrapper.tsを作成して、okta auth sdkをラップし、oauthserviceと統合します。そのlogin()メソッドはOktaauthを使用してセッショントークンを取得し、IDとアクセストークンと交換します。

    上記のコードでは、oauthService.trylogin()idtoken and Accesstokenを分割および保存するため、oauthservice.getidtoken()およびoauthservice.getaccestoken()。

    <span>git clone https://github.com/mraible/ng-demo.git
    </span>

    app.module.ts。

    のプロバイダーとしてoktaauthwrapperを追加します
    ng new ng-demo
    

    ホームコンポーネントを変更して、Oktaauthを宣言し、ログインするボタンとサインインフォームがあるようにテンプレートを変更します。

    <span>[mraible:~/dev] $ ng new ng-demo
    </span>installing ng
      create .editorconfig
      create README.md
      create src/app/app.component.css
      create src/app/app.component.html
      create src/app/app.component.spec.ts
      create src/app/app.component.ts
      create src/app/app.module.ts
      create src/assets/.gitkeep
      create src/environments/environment.prod.ts
      create src/environments/environment.ts
      create src/favicon.ico
      create src/index.html
      create src/main.ts
      create src/polyfills.ts
      create src/styles.css
      create src/test.ts
      create src/tsconfig.app.json
      create src/tsconfig.spec.json
      create src/typings.d.ts
      create .angular-cli.json
      create e2e/app.e2e-spec.ts
      create e2e/app.po.ts
      create e2e/tsconfig.e2e.json
      create .gitignore
      create karma.conf.js
      create package.json
      create protractor.conf.js
      create tsconfig.json
      create tslint.json
    Successfully initialized git.
    Installing packages <span>for tooling via npm.
    </span>Installed packages <span>for tooling via npm.
    </span>You can <span><span>`ng set --global packageManager=yarn`</span>.
    </span>Project <span>'ng-demo' successfully created.
    </span><span>[mraible:~] 46s $
    </span>
    これらの変更を行った後、ホームコンポーネントは次のようにレンダリングする必要があります。

    ユーザー名とパスワードフィールドにローカル変数を追加し、OktaauthWrapperをインポートし、HomeComponentにloginWithPassword()メソッドを実装します。 アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップ

    アプリの登録ユーザーのいずれかを使用して、フォームを使用してサインインできるはずです。ログインした後、検索リンクをクリックして人の情報を表示できます。

    $ ng <span>--version
    </span>    _                      _                 ____ _     ___
       / <span>\   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
    </span>  / △ <span>\ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
    </span> / ___ <span>\| | | | (_| | |_| | | (_| | |      | |___| |___ | |
    </span>/_/   <span>\_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
    </span>               <span>|___/
    </span>@angular/cli: <span>1.3.2
    </span>node: <span>8.4.0
    </span>os: darwin x64
    
    Angular okta

    すべてが機能している場合 - おめでとうございます!問題が発生した場合は、OKTAタグでオーバーフローをスタックするために質問を投稿するか、Twitter @Mraibleで私を叩きます。 アプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップこのブログ投稿で作成されたアプリケーションの完了バージョンをGitHubで見つけることができます。 Angularのセキュリティの詳細については、Angularのセキュリティ文書を参照してください。 OpenID Connectの詳細については、以下のなだめるようなビデオを見ることをお勧めします。

    oidc

    を使用した角度認証に関するよくある質問(FAQ)

    角度認証におけるOIDCの役割は何ですか?

以上がアプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。