编写自定义OmniAuth策略

5
我有一个使用Devise的Rail 4应用程序。 我正在尝试配置OmniAuth以使用我们公司的Ping OpenID Connect IdP。 似乎我必须在Rack中间件中编写一个OmniAuth策略。
我使用了'omniauth-digitalocean'宝石(其中包含他们的策略),并仔细将所有'digitalocean'的引用替换为另一个名称。我小心地遵守了所有大小写规则。
现在我遇到的问题是,我似乎有一个私有宝石。 我使用以下命令将其添加到Gemfile中:
gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0"

当我运行'bundle install'时,没有出现任何错误。

但是在使用'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策略,因此我认为这意味着我的gem没有被识别出来。
所以我不确定具体情况如何。我认为我正在与这个私有gem作斗争。但也可能是OmniAuth的问题。
有人曾经用OmniAuth成功连接过私有的OpenID Connect IdP吗?
4个回答

3
我遇到了与我的自定义Omniauth OAuth2策略相关的“找不到名称为...的策略”的问题。
我按照这些说明https://github.com/intridea/omniauth-oauth2创建了一个自定义策略,并将我的文件保存在config/initializers中 - 然后在ruby启动时加载模块。
我认为我应该能够将其存储在lib/文件夹中,但无法确定文件名或文件夹结构!

2

你需要添加:

require 'strategies/private'

将以下代码添加到config/devise.rb文件的顶部,它将指向/lib/strategies/private.rb中的策略文件。

1
“Not a git repo”的“致命”错误是由于gem使用“git ls”引起的。只需运行“git init”即可解决。我这样做了,然后提交到github。
“找不到名称为...的策略”错误是通过正确加载自定义gem来修复的。我通过将以下行添加到我的Gemfile中实现了这一点:
gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0

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' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接