問題タブ [bearer-token]
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.
angularjs - クエリ文字列を介して "Bearer" を渡すと、SignalR 認証が失敗しました
サーバーが ASP.NET WebAPI でホストされているときに、SignalR で認証を有効にしたいと考えています。OAuth ベアラー認証を使用しており、クライアントは AngularJS です。
クライアント側では、もともと HTTP ヘッダーを介してベアラー トークンを渡し、WebAPI とうまく連携します。しかし、SignalR JavsScript は HTTP ヘッダーの追加をサポートconnection
していないため (WebSocket が HTTP ヘッダーの指定をサポートしていないためです)、次のようなコードを使用してクエリ文字列を介して Bearer トークンを渡す必要があります。self.connection.qs = { Bearer: 'xxxxxx' };
問題は WebAPI 側にあり、SignalR は常に 401 Unauthorized を返しました。
以下は、私が WebAPI 側で行ったことです。
1 に指定OAuthBearerAuthenticationOptions.Provider
しました。これは、クエリ文字列から Bearer トークンを取得できる、QueryStringEnabledOAuthBearerAuthenticationProvider
継承して作成したクラスです。OAuthBearerAuthenticationProvider
以下のようにコードします。
そしてWebAPI起動時に以下のように登録。
2, SignalR の部分で、以下のように authorize 属性を作成しました。ブレークポイントを追加するために使用するためだけに何も変更されていません。
WebAPIの起動時にも登録しました。
SignalR が接続されたときQueryStringEnabledOAuthBearerAuthenticationProvider.RequestToken
に呼び出され、Bearer トークンが正常に取得されたことがわかりました。ただし、SignalRBearerAuthorizeAttribute.AuthorizeHubConnection
が呼び出されたとき、パラメーターrequest.User
はまだ認証されていません。そのため、401 が返されました。
何が間違っていたのか、誰かにアイデアを教えてもらえますか、ありがとう。
asp.net-mvc - Google が発行したベアラー トークンにアクセスする MVC 5 コントローラー
VS 2013 でデフォルトの MVC5 SPA プロジェクト テンプレートを使用しています。組み込みの Google 認証メカニズムを使用して、Google に対してユーザーを認証しています。
ユーザーが正常に認証されたら、Google が発行したベアラー トークンにアクセスする必要があります。コントローラークラスからこれを取得するにはどうすればよいですか?
asp.net - Web API のベアラー トークンからユーザー ロールを返す
Web API 2 プロジェクトを開発しています。認証にはベアラートークンを使用しています。認証が成功すると、API は JSON オブジェクトを返します。
ここで、この JSON オブジェクトでユーザー ロールも返したいと思います。JSON 応答からユーザー ロールを取得するには、どのような変更を行う必要がありますか?
asp.net-mvc - SSL と app.UseOAuthBearerTokens ASP.NET MVC 5 で問題を引き起こす AppHarbor のリバース プロキシ
AppHarbor のアプリケーションは、NGINX ロード バランサーの背後にあります。このため、SSL はこのフロント エンドによって処理されるため、クライアント アプリにヒットするすべての要求は HTTP 経由で送信されます。
ASP.NET MVC の OAuth 2 OAuthAuthorizationServerOptions には、トークン要求へのアクセスを HTTPS のみを使用するように制限するオプションがあります。問題は、Controller や ApiController とは異なり、AllowInsecureHttp = false を指定したときにこれらの転送されたリクエストを許可する方法がわからないことです。
具体的には、アプリの起動/構成で:
どうにかしてこのチェックを内部で行う必要があり、それが true の場合は SSL として扱います。
カスタムフィルター属性を適用してMVCコントローラーを使用する方法は次のとおりです: https://gist.github.com/runesoerensen/915869
c# - Bearer 認証にロジックを追加する
この記事に基づいて、OWIN ベアラー トークン認証を実装しようとしています。ただし、実装方法がわからないベアラー トークンに必要な追加情報が 1 つあります。
私のアプリケーションでは、ベアラー トークンのユーザー情報 (ユーザー ID など) から推測する必要があります。許可されたユーザーが別のユーザーとして行動できるようにしたくないため、これは重要です。これは実行可能ですか?それは正しいアプローチですか?ユーザー ID が GUID の場合、これは簡単です。この場合は整数です。許可されたユーザーは、推測や力ずくで別のユーザーになりすます可能性がありますが、これは容認できません。
このコードを見ると:
必要なものに対応するために承認/認証をオーバーライドすることは可能だと思いますか?
owin - リモート Web API を呼び出すベアラー トークンを生成する方法
ユーザーがログインしてアカウントを管理するサイトと、UI がなく、コンテンツを保存および取得するための API にすぎないサイトの 2 つのサイトがあります。これらのサイトはどちらも、同じ Owin ASP.Net Identity 2.0 セットアップを使用しています。UI サイトは明らかな理由で Cookie を使用し、API サイトは Bearer トークンを使用します。現在のユーザー認証を使用して、UI サイトから API メソッド/URL を呼び出せるようにする必要があります。つまり、UI サイトで有効な Bearer トークンを生成して、Rest API 呼び出しを行うときに HTTP ヘッダーに追加する必要があります。
「信頼できる」クライアント認証を使用し、API の /Token URL を呼び出してベアラー トークンを生成する方法を探していました。または、両方のサイトが同じコードを共有し、ユーザー テーブルが Owin メソッドを呼び出してベアラー トークンを生成するためです。 API ヘッダーに渡すことができる UI サイトのコードと、API サイトはそれを有効なトークンと見なします。
さらに情報が必要な場合は、お知らせください。
更新: oAuth Implicit フローでこれを行う正しい方法については、以下の更新された回答を参照してください。