問題タブ [jwt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - サービス アカウントを使用して Google v3 API で認証するにはどうすればよいですか
ここのサンプル コードに従いました: https://code.google.com/p/google-api-dotnet-client/wiki/OAuth2#Service_Accounts
認証が次のエラーで失敗する: DotNetOpenAuth.Messaging.ProtocolException: ダイレクト メッセージの送信中または応答の取得中にエラーが発生しました。
内部例外は System.Net.WebException です。リモート サーバーがエラーを返しました: (400) Bad Request。レスポンスの本文は空で、レスポンスの URI はhttps://accounts.google.com/o/oauth2/tokenです。
以下の応答では、特定のエラーが invalid_grant であることがわかります。
これが私のコードです:
証明書と ServiceAccountId が正しい。私はトリプルチェックを行い、適切な手段として証明書を再生成しました。Google カレンダー API は、サービス アカウントの作成に使用される Google 開発者アカウントの API コンソールで有効になっています。このアカウントは Google Apps ドメインの一部ではありません。
また、AssertionFlowClient の ServiceAccountUser プロパティを指定してこれをテストしました。私は今、これが必要であると信じています - 手動で作成された JWT を使用した CalendarService のテストに成功しました (以下の OAuth トークンの手動作成を参照)。 prn 属性が含まれていないトークンを作成しようとすると、404 エラーを受け取りました要求 (つまり、ServiceAccountUser は含まれません)。
Google Apps ドメインの設定
Google Apps ドメインで、このサービス アカウントにカレンダーへのアクセスを許可しました。
クライアント名: [中略].apps.googleusercontent.com
API スコープ:
- カレンダー (読み取り/書き込み) https://www.google.com/calendar/feeds/
- カレンダー (読み書き可能) https://www.googleapis.com/auth/calendar
インストールされた NuGet パッケージ
- Google.Apis (1.5.0-ベータ)
- Google.Apis.Calendar.v3 (1.5.0.59-ベータ版)
- Google.Apis.Authentication (1.5.0-ベータ)
リクエストとレスポンス
よく調べてみると、アサーションは正しく、ここでデコードされているように見えます。
OAuthトークン作品の手動作成
セットアップが正しく行われたことを確認するために、google-oauth-jwt (ここではhttps://github.com/extrabacon/google-oauth-jwt ) を使用して手動でトークンを作成しました。上記のコードで使用しているのと同じ属性を使用して、トークンを正常に作成できました。トークンを作成してカスタム IAuthenticator で使用すると、ターゲットの Google Apps ドメインのユーザーのカレンダーからイベントを正常に取得できます。ご参考までに、カレンダーへのアクセスはサービス アカウントで可能です。
Authorization ヘッダーを追加するだけの IAuthenticator 実装を次に示します。
asp.net-mvc - Azure ACS によって発行された JWT を更新する
15 分間有効な JWT を発行するように Azure ACS を構成しました。ユーザーが Web アプリケーション (MVC) にログインすると、ユーザーはトークンを使用して別のサーバー (WebAPI) 上のリソースにアクセスします。次に、WebAPI サーバーはそのトークンを検証します。
では、Web アプリでのユーザーの作業を中断することなく、何らかの方法で JWT を更新する方法はありますか? ウィンドウをポップアップして、ユーザーに再度サインインするように求めたくありません。
ありがとう!
model-view-controller - カスタム JwtSecurityTokenHandler が呼び出されていない
認証に Azure Active Directory を使用する .NET MVC アプリケーションがあります。
アプリに対していくつかの基本的な GET 要求を実行するコンソール アプリを認証するために、カスタム JWTSecurityTokenHandler を追加しようとしています。ただし、すべての要求は、JWT ハンドラーに渡されるのではなく、Azure AD ログイン ページにリダイレクトされるだけです (ハンドラーのブレークポイントとログ ステートメントはヒットしません)。何か案は?
Web.config:
java - スタンドアロン アプリケーションを介して JWT を使用して Java でリフレッシュ トークン リクエストを作成する - Web アプリではない
JWT を使用して Google アナリティクスのリフレッシュ トークンを取得する方法について質問があります。
正常に動作している以下のサンプル コードを参照してください。Analytics オブジェクトを取得できます。これを使用して、Analytics データにアクセスできます。
credentialGA.getAccessToken()を呼び出すと、文字列が返されます。しかし、 credentialGA.getRefreshToken()を呼び出すと、 常に null が返されます。今後の呼び出しにこの Analytics オブジェクトを使用する必要がある場合は、GoogleCredential オブジェクトを再度作成して Analytics オブジェクトを取得できるリフレッシュ トークンが必要です。
https://developers.google.com/accounts/docs/OAuth2ServiceAccountに記載されている手順に従って、JWT を作成しました。この JWT は、リフレッシュ トークンの呼び出しに使用されます。このリンクで共有されている例では、servlet/jsp/http を介してそれを可能にする方法を説明しています。 https://code.google.com/p/gwdg-java/source/browse/src/java/com/google/iapsample/?r=a52c4e72381b1fc959053e3a1fc8c585ae2d7112
Javaスタンドアロンアプリを使用してJWTを使用してリフレッシュトークン呼び出しの同じタスクを達成することを説明するコード例はありますか?
前もって感謝します。
よろしく、 プラサメシュ
JWT を生成するコード:
次に、この JWT 文字列がコピーされ、別のプログラマーで使用されて、以下に示すように更新トークンを要求します。
java - Java での JSON Web トークンの作成
Google アナリティクス API アクセスでリフレッシュ トークンを呼び出すために使用するために、JSON Web トークンを作成しようとしています。私はサービスアカウントアプローチを採用しました。
このアプローチに従って、次のことを行う必要があります。
- サービス アカウントの作成
- アナリティクス アプリ用に作成したメール アドレスを Google アナリティクス アカウントに追加します。
- 秘密鍵ファイル (.p12) をダウンロードします。
- このプライベート キーと電子メール アドレスを使用して JWT を構築し、その後、リフレッシュ トークンを取得するために Google 認証サーバーへの HTTP POST 呼び出しを行うために使用されます。
JWT を作成する私のアプローチが正しいかどうかはわかりません。Google Code サイトにあるサンプルJWT_Handler.java
では、ヘッダーと署名部分が欠落しているクレーム部分とリクエスト ペイロードのみを使用して JWT を作成する方法について説明しています。これは、JWT に次の 3 つの部分が含まれるリフレッシュ トークン用の JWT を作成するための Google のガイドラインと混同しています。
- JWT ヘッダー
- JWT クレーム
- サイン
3 つの部分はすべて Base64Url でエンコードされています。次のコードを試しました:
c# - nuget を使用して JWT を追加しましたが、現在のコンテキストに jwt が存在しないとエラー リストに表示されるのはなぜですか?
編集:したがって、参照を削除して右クリックして参照を追加し、再度追加すると、オブジェクトブラウザに表示され、名前空間を解決できます。プロジェクトをビルドするか、ソリューションをビルドすると、オブジェクト ブラウザーから消えてエラーが再び表示されます。
ZenDesk を現在のソフトウェアに統合して、テクニカル サポートがチケットを追跡できるようにしようとしています。これを行うには、github の単純な C# コードを使用して SSO をセットアップし、JSON Web トークンを生成する必要があります。
プロジェクトは Visual Studio 2010 にあり、コードを実行するには NuGet からインストールした JWT が必要です。
なんらかの理由で、名前空間はコードで解決されません。
ここで 2 つのエラーが発生します。
「名前「JWT」は現在のコンテキストには存在しません。これは 1 つのプロジェクト ソリューションであるため、すべてが 1 か所にあります。また、オブジェクト ブラウザで JWT.dll を表示できません。using ディレクティブを入れようとしても:
まだまだ解決しません。
バージョンは JWT バージョン 1.3.2 です。
なぜこれが解決しないのか考えていますか?
完全なコードは次のとおりです。
node.js - ノードアプリで Google OAuth 2.0 JWT (OpenID Connect) をデコードするにはどうすればよいですか?
ノードエクスプレスアプリでユーザーを認証するためにGoogle OAuthを使用しようとして、ここでかなりの時間を過ごしています。次のような応答を返す OAuth を正常に実行できます。
これはすべて理にかなっていますが、私の人生では、JWT をデコードする方法を理解することはできません。私はこれらすべてに少し慣れていないので、これは私にとって少し異質です。
ここにリストされている手順に従ってください: https://developers.google.com/accounts/docs/OAuth2Login#validatinganidtokenノード アプリで JWT をローカルにデコードしようとしています。
ノード環境にhttps://github.com/hokaccha/node-jwt-simpleをインストールしました。
そして、この証明書 ( https://www.googleapis.com/oauth2/v1/certs ) を何らかの方法でデコードするために使用する必要があると確信していますが、ここで少し途方に暮れています。ノードアプリに証明書を取得する方法と、その後 node-jwt-simple で証明書を使用する方法がよくわかりません。また、キャッシュされた証明書を使用する場合と比較して、新しい証明書をプルする必要がある場合をどのように知るかについてもよくわかりません。
私を助けることができるこの経験のある人はいますか?
助けてくれてありがとう。この時点で私は完全に途方に暮れています。
** アップデート **
それで、私はいくつかの進歩を遂げました...ちょっと。jwt.decode(id_token, certificate, true); を呼び出します。トークンを正常にデコードできました。証明書変数が空のオブジェクト {} であっても。これにより、まだ3つの質問が残っています。1: Google からの URL を使用して Express アプリに証明書を取得する最良の方法は何ですか? 2: 新しいバージョンを取り込む必要があるときは、どうすればわかりますか? 3: noVerify (jwt.decode の 3 番目の引数) に true を渡すのはひどい考えのようです。それを渡さずに機能させるにはどうすればよいですか?おそらく jwt-simple は hs256 を想定しており、トークンは rs256 を使用しているようです。
繰り返しますが、私はこれについて非常に経験が浅いため、ここでベースから外れている可能性があります。
* 更新 * Nat の助けのおかげで、これを機能させることができました! そこにあるすべてのJWTおよびJWSノードモジュールを試したと思います。私が最終的にたどり着いたのは次のとおりです。私が調べたモジュールのどれもが、箱から出してすぐに望んでいたことをまったくしていないことがわかりました。id_token をデコードするために使用している次の jwt デコード ヘルパー メソッドを作成したので、ヘッダーから kid を取得できます。
このデコードを使用して、 https ://www.googleapis.com/oauth2/v1/certs から新しい公開証明書を取得する必要があるかどうかを判断しています。
次に、その公開証明書と node-jws ( https://github.com/brianloveswords/node-jws ) jws.verify(id_token, cert) を使用して署名を検証しています!
万歳!返信で追加の説明をありがとうございました。それは、私が何をしようとしているのかを理解するのに大いに役立ちました. これが他の人にも役立つことを願っています。
node.js - node-jwt-simple を使用したパスポートローカル
パスポートローカルを組み合わせて、認証の成功時に JWT トークンを返すにはどうすればよいですか?
node-jwt-simpleを使用したいのですが、 passport.jsを見てどうすればよいかわかりません。
done() を呼び出すときにトークンを返すことは可能ですか? このようなもの...(単なる擬似コード)
そうでない場合、どうすればトークンを返却できますか?