問題タブ [ruby-openid]
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.
ruby-on-rails - Ruby-OpenID: OpenID プロバイダーからのメールアドレスを要求する
私はauthlogic-example-appで遊んでいますが、ユーザーを登録するときに OpenID プロバイダー (私の場合は Google と Yahoo) からメールアドレスを取得できません。電子メール アドレスではなく、空の応答が返されます (以下のコードのコメントを確認してください)。
これが私のユーザー モデルの外観です (他のすべては、上記の authlogic-example-app の「with_openid」ブランチのように見えます)。「email」がないことに加えて、openid-authentication-process は期待どおりに機能します。
これを解決する方法はありますか?authlogicを使用する前にこれを行った人はいますか? またはさらに良い: 実際の例はありますか?
更新: Google アカウント認証 APIを確認し、 authlogicによって送信された要求( ruby-openid-gemおよびopenid-authentication-plugin を使用) を、Google アカウント認証 API ドキュメントの要求例と比較しました。
Google によるメール アドレスの認証と取得のリクエストの例:
アプリケーションによって送信されたリクエスト:
セットアップ全体をデバッグしているときに、openid-authentication-pluginが openid プロバイダーから受信した応答で電子メールを受信しないことがわかりました。これは、少なくともregistration
ユーザーモデルのハッシュが空である理由を説明しています...
更新: authlogic と openid で遊んでいる場合は、この件に関する最新の Railscastをチェックすることを忘れないでください!
ruby - WebFinger と OpenID を使用したログイン
私は WebFinger をいじっていて、ユーザーが WebFinger アカウントだけを使用してログインできるようにする小さな Rails アプリを作成しようとしています。私は自分自身をうまく指で示すことができ、次のスニペットを含む XRD ファイルが返されます。
私には、「URL に OpenID 2.0 ログインがあります: http://www.google.com/profiles/{redacted}
」と表示されます。しかし、その URL を使用してログインしようとすると、次のエラーが発生します。
OpenID::DiscoveryFailure (Failed to fetch identity URL http://www.google.com/profiles/{redacted} : Error encountered in redirect from http://www.google.com/profiles/{redacted}: Error fetching /profiles/{Redacted}: Connection refused - connect(2)):
プロファイル URL を「 https://www.google.com/accounts/o8/id 」に置き換えると、ログインは完全に機能します。
これが私が使用しているコードです(プラグインとしてRedFingerを使用しており、JanRainのruby-openidをgemなしでインストールしています)
WebFinger から受け取った URL を使用して OpenID でログインすることはできますか?
ruby-on-rails - Rails: ruby-openid に関する簡単なバンドラーの質問
ruby-openid gemをインストールしてから、次のように入力してバンドルしました
宝石ファイルで。次に、バンドルのインストールとバンドルのロックを開始しました。これまでのところ、すべてうまくいきました。
しかし、どうすれば ruby-openid のクラスにアクセスできますか?
私にはうまくいきません。見つからないというエラーが発生します。
私は何を忘れたか、間違ったことをしましたか?
私はバンドラーと、さまざまなバージョンのソリューションでいっぱいのインターネットにまったく慣れていませんが、確実に機能するソリューションが1つ必要です。
助けてくれてありがとう!
ruby-on-rails - openidを使用してユーザーの詳細を取得する
ログインの目的でopen_id_authenticationプラグインを使用しています。プラグインを正しく統合することができ、うまく機能します。ユーザーのニックネームやメールアドレスなど、取得できない追加の値を取得したいのですが。次のコードを使用していますが、登録フィールドが空です。私はここで何か正しくやっていますか?
ruby - ruby-openid: 検出の実行中に @socket が設定されていません
omniauth/openid でちょっとしたトラブルが発生しています。
認証しようとすると、ログにこれが見つかりました:
undefined method io' for nil:NilClass
次のスニペットでは、openid/fetchers.rb に由来する重要な点があります。
そのエラーは によって生成され@socket.io.peer_cert
、@socket は定義されていません。
以前にこれに遭遇した人はいますか?何が原因なのかよくわかりません。
私が実行しているバージョン:
- ruby 1.9.3dev (2010-08-17 トランク 29020) [x86_64-darwin10.4.0]
- ruby-openid (2.1.8)
- ruby-openid-apps-discovery (1.2.0)
- オムニ認証 0.2.0
ruby-on-rails - Rails3 + OpenID == mmmmmm; Rails3 + JQGrid == mmmmmm; Rails3 + OpenID + JQGrid == BZZZT
JQuery ウィジェット(特にJQGrid )を Rails 3 アプリケーションで使用しようとしています。私は ruby-openid を使用して Google で認証を行い、Seth Ladd の素晴らしいレシピを使用してそれを機能させました。
それは何をしますか-ウェブフォームからのページビューと投稿。
ただし、JQGrid がサーバー上のデータを更新するために POST を実行すると、次の 2 つのことが発生します。
ユーザーのブラウザーが Google へのログインによって既に認証されている場合でも、POST は認証されていないブラウザーから送信されたかのようにサーバーに表示され、OpenID 認証ダンスにリダイレクトされます。それはそれを除いてショーストッパーではありません
サーバーがリダイレクトと認証を開始するはずの 401 を返すとすぐに、エンチラーダ全体が停止します。通常 (たとえば、フォーム送信からの POST 要求のように)、ブラウザーは 401 を認識し、同封の「ここで認証」情報を読み取り、ダンスを行い、セッションがセットアップされて戻ってきて、サイクルが続きます。しかし、JQuery/JQGrid からは...それほど多くはありません。
何か案は?ここで明らかな何かが欠けていると確信していますが、ラムズフェルドの「未知の未知」の 1 つが進行中です。何が欠けているのか、ましてやそれを修正する方法がわかりません! これは長い間解決されてきた問題のようですね。
私は XSS 防御に違反している可能性がありますが、もしそうなら、* *- OpenID ですでに行った深刻な投資 (既にサインアップしているユーザーとパスワードを提供/記憶する必要があるユーザーを含む) を無効にする以外の方法がわかりません。 - くそっ!)。
事前に感謝します、私の専門家の同僚。
(Rails 3.0.7、ruby-openid 2.1.8、JQGrid 3.5.3、JQuery 1.3.2、Google を OP として使用するため、ユーザーは ID URL を入力する必要がありません。)
ruby-on-rails - 相対ルートは、Passengerを使用してRails 3にアップグレードした後、異なるOpenIDユーザートークンを引き起こします
gmail openidは、Redmine 1.3.1(Rails 2 Mongrel)で1年以上動作しています。別のボックスをRedmine2.0.3(Rails 3 Passenger)にアップグレードしましたが、古いインスタンスからアップグレードされたインスタンスに切り替えると、すべてのユーザーにGoogle認証アプリケーション画面が表示され、[はい]をクリックすると、 Redmine登録画面。
Railsセッションsecret_tokenを、データベース全体とともにアップグレードされたインスタンスに転送しました。Redmine 1.2から1.3.1にアップグレードするときは、過去にこの手順を正確に実行しましたが、完全に機能しました。アップグレードした新しいRedmineインスタンスに新しいアカウントを登録し、Gmailのユーザーアカウント設定に移動すると、同じURLに対してRedmineの2つの承認済みアプリケーションがあることがわかります。
問題の根本は、認証時にOpenIDプロバイダーに渡されるopenid.realmにあるようです。ユーザーがGoogleに送信されると、URLパラメータが次のように変更されます。
openid.realm=http://our.domain.com/redmine/
openid.return_to=http://our.domain.com/redmine/login?_method%3Dpost%26open_id_complete%3D1
に:
openid.realm=http://our.domain.com
openid.return_to=http://our.domain.com/redmine/login?_method%3Dpost
アップグレードされたインスタンスのレルムには/redmineが含まれていません。ブラウザのURLを手動で編集した後、このセクションを追加すると問題が解決することを確認しました。正しいopenid.realmを生成するために何ができますか?それでもPassengerで動作します。相対ルートURLは、Passengerのrailsレベルではなく、Apacheレベルで処理されますか?
使用される宝石:open_id_authentication、ruby-openid、rack-openid。
よろしく、ピエール
ruby-on-rails - ruby-openid のリターン URL を設定できますか?
ruby-openid を使用していますが、リターン URL をデフォルト (現在のアクション) 以外に変更できますか?
(レール4を使用)