我有Devise的Rail 4应用程序。 我正在尝试配置OmniAuth以使用我们的企业Ping OpenID Connect IdP。 看来我必须在Rack Middleware中编写一个OmniAuth策略。
我选择了'omniauth-digitalocean'宝石(有他们的策略),并仔细替换了“数字海洋”的所有参考资料。另一个名字。我谨慎地尊重所有情况以符合惯例。
我现在遇到的问题是我似乎有一个私人宝石。 我把它添加到我的Gemfile中:
gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0"
我在运行'捆绑安装'。
时没有出错我在“rake db:migrate':
”中收到此错误fatal: Not a git repository (or any of the parent directories): .git
我认为这是由我的自定义gem中的.gitignore文件引起的。 我删除了.gitignore文件,现在我得到了:
Devise::OmniAuth::StrategyNotFound: Could not find a strategy with name `Private'. Please ensure it is required or explicitly set it using the :strategy_class option.
在我弄清楚我需要编写n Omniuth策略之前,这是我得到的相同错误消息,所以我认为这意味着我的宝石未被识别。
所以我不确定究竟发生了什么。我想我正在与这个私人宝石挣扎。但它也可能是一个OmniAuth问题。
有人曾经使用过OmniAuth私有OpenID Connect IdP吗?
答案 0 :(得分:2)
我有同样的"无法找到名称的策略......"使用我的自定义Omniauth OAuth2策略。
我根据这些说明https://github.com/intridea/omniauth-oauth2创建了一个自定义策略,并将我的文件保存在config / initializers中 - 然后将该模块加载到ruby boot上。
我觉得我应该能够将它存储在lib /文件夹中,但是不能解决文件名或文件夹结构应该是什么!
答案 1 :(得分:1)
关于“不是git repo”的“致命”错误来自于宝石使用'git ls'的事实。只运行“git init”应该修复它。我做了那个然后致力于github。
“找不到具有名称的策略...”错误通过正确加载自定义gem来解决。我通过将这一行添加到我的Gemfile中来做到这一点:
gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0
答案 2 :(得分:1)
您需要添加:
require 'strategies/private'
到config / devise.rb的顶部。这指向/lib/strategies/private.rb
中的策略文件答案 3 :(得分:0)
在设计/初始化程序文件中检查并确保您具有正确的名称 您要配置的身份验证示例:
config.omniauth :facebook, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
config.omniauth :private, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'