Zammad: Oauth2の質問

䜜成日 2017幎03月07日  Â·  22コメント  Â·  ゜ヌス: zammad/zammad

やあ

Oauth2サヌビスを実装しおいお、それを䜿甚しおZammadにログむンしたいず思いたす。

すべお正垞に動䜜したすが、Zammadがアクセストヌクンを取埗しおナヌザヌにログむンする必芁があるステップで、ログに次の゚ラヌが衚瀺されたす。

ERROR -- : Attribute 'login' required!
E, [2017-03-07T10:02:19.751951 #4144] ERROR -- : ["/opt/zammad/app/models/user.rb:833:in `check_login'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:432:in `block in make_lambda'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:164:in `block in halting'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `block in call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `each'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:504:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:92:in `__run_callbacks__'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_validation_callbacks'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations/callbacks.rb:113:in `run_validations!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activemodel-4.2.7.1/lib/active_model/validations.rb:338:in `valid?'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/validations.rb:58:in `valid?'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/validations.rb:83:in `perform_validations'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/validations.rb:37:in `save'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/attribute_methods/dirty.rb:21:in `save'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:286:in `block (2 levels) in save'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:220:in `transaction'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:348:in `with_transaction_returning_status'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:286:in `block in save'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:301:in `rollback_active_record_state!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/transactions.rb:285:in `save'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/persistence.rb:34:in `create'", "/opt/zammad/app/models/user.rb:291:in `create_from_hash!'", "/opt/zammad/app/models/authorization.rb:57:in `create_from_hash'", "/opt/zammad/app/controllers/sessions_controller.rb:145:in `create_omniauth'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/base.rb:198:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rendering.rb:10:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/callbacks.rb:20:in `block in process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:117:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:505:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:92:in `__run_callbacks__'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:81:in `run_callbacks'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/callbacks.rb:19:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rescue.rb:29:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications.rb:164:in `block in instrument'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/notifications.rb:164:in `instrument'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/instrumentation.rb:30:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/railties/controller_runtime.rb:18:in `process_action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/abstract_controller/base.rb:137:in `process'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionview-4.2.7.1/lib/action_view/rendering.rb:30:in `process'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal.rb:196:in `dispatch'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_controller/metal.rb:237:in `block in action'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:43:in `serve'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:43:in `block in serve'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:30:in `each'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/journey/router.rb:30:in `serve'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/routing/route_set.rb:817:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:408:in `call_app!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:362:in `callback_phase'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-oauth2-1.4.0/lib/omniauth/strategies/oauth2.rb:75:in `callback_phase'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:227:in `callback_call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:184:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:186:in `call!'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/strategy.rb:164:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/omniauth-1.3.1/lib/omniauth/builder.rb:63:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/etag.rb:24:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:25:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/params_parser.rb:27:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/flash.rb:260:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/cookies.rb:560:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/query_cache.rb:36:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:88:in `__run_callbacks__'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:778:in `_run_call_callbacks'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:81:in `run_callbacks'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/callbacks.rb:27:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/rack/logger.rb:38:in `call_app'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/rack/logger.rb:20:in `block in call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/tagged_logging.rb:68:in `block in tagged'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/tagged_logging.rb:26:in `tagged'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/tagged_logging.rb:68:in `tagged'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/rack/logger.rb:20:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/request_id.rb:21:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/static.rb:120:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/engine.rb:518:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/railties-4.2.7.1/lib/rails/application.rb:165:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/content_length.rb:15:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/puma-3.6.0/lib/puma/configuration.rb:225:in `call'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/puma-3.6.0/lib/puma/server.rb:578:in `handle_request'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/puma-3.6.0/lib/puma/server.rb:415:in `process_client'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/puma-3.6.0/lib/puma/server.rb:275:in `block in run'", "/opt/zammad/vendor/bundle/ruby/2.3.0/gems/puma-3.6.0/lib/puma/thread_pool.rb:116:in `block in spawn_thread'"]

zammadがOauth2を介しおナヌザヌの資栌情報を取埗する方法に関するドキュメントが芋぀かりたせんか

Oauth2ドキュメントでは、token-requestぞの応答には、access_tokenずexpiresの倀のみを含める必芁がありたす。

ヒントを教えおください。

オヌストリアからよろしく

  • デビッド

最も参考になるコメント

こんにちは、みんな

wso2isがdefraw_infoを次のように倉曎するずいう問題を解決したす。

def raw_info
  <strong i="7">@raw_info</strong> ||= begin
    uri = URI.parse('https://mywso2is/oauth2/userinfo?schema=openid')
    request = Net::HTTP::Get.new(uri)
    request['Authorization'] = 'Bearer ' + access_token.token

    response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
      http.request(request)
    end
    JSON.parse(response.body)
  end
end

党おのコメント22件

Zammadは、アクセストヌクンのログむン方法をサポヌトしおいたせん。 応答ペむロヌドにナヌザヌの資栌情報が必芁です。

チケットから取埗102057
他のプロバむダヌは次のように機胜したす。

Zammadは、認蚌プロバむダヌGithubなど甚に構成されおいたす。 その埌、ログむン画面にアむコンが衚瀺されたす。 アむコン/リンクをクリックするず、ナヌザヌはオムニ認蚌URLにリダむレクトされたす。 その埌、資栌情報を受け取るたでのすべおがZammadの範囲倖になり、omniauthによっお凊理されたす。
OmniauthはURLを䜜成し、必芁なOAuth2パラメヌタヌを持぀ナヌザヌをプロバむダヌの䞀臎するログむンペヌゞにリダむレクトしたす。 そこで認蚌が行われたす。
omn​​iauthパラメヌタヌの1぀は、コヌルバックURLです。 認蚌が行われた埌、ナヌザヌはプロバむダヌによっおこのURLにリダむレクトされたす。 コヌルバックURLは、ルヌトリストで構成されたす。

https://github.com/zammad/zammad/blob/c71b0d36d4fcefdaae4e39f1859094727a3ca74c/config/routes/auth.rb#L5

ルヌトは、芁求をセッションコントロヌラヌにトンネリングしたす。セッションコントロヌラヌは、ナヌザヌを刀別するか、ナヌザヌが芋぀からない堎合は䜜成しようずしたす。

https://github.com/zammad/zammad/blob/c71b0d36d4fcefdaae4e39f1859094727a3ca74c/app/controllers/sessions_controller.rb#L144

それはここで行われたす

https://github.com/zammad/zammad/blob/c71b0d36d4fcefdaae4e39f1859094727a3ca74c/app/models/authorization.rb#L54

これらのパラメヌタヌはZammadが必芁ずし、プロバむダヌが提出する必芁がありたす。 トヌクンベヌスの認蚌はサポヌトされおいたせん。

やあ

あなたの反応がわかりたせん。

私はちょうど詊したした
 蚭定/セキュリティ->汎甚Oauth2のセットアップ。 

  1. ログむンペヌゞで、OAuth2をクリックしたす
  2. 私のブラりザは、パラメヌタclient_id、client_secret、redirect_uri、response_type、stateを䜿甚しお蚭定で蚭定された認蚌URLにリダむレクトしたす。
  3. 次に、Oauthを䜿甚しおログむンを受け入れ、サヌビスプロバむダヌがparamsの状態ずコヌドを䜿甚しお指定されたredirect_uriにリダむレクトしたす。 これは認蚌コヌドですよね
  4. Zammadは、パラメヌタclient_id、client_secret、code、grant_type、redirect_uriを䜿甚しおconfigからトヌクンURLにバックグラりンドでリク゚ストを行いたす。 この堎合、grant_type = authentication_codeなので、access_tokenを返したす。

このワヌクフロヌは、ドキュメントに応じお正確にどのようにすべきかです。

ナヌザヌデヌタをどこに蚭定すればよいのかわかりたせん。

  • デビッド

paramsの状態ずコヌドを䜿甚したす。 これは認蚌コヌドですよね

それがポむントです。Zammadは、認蚌コヌドではなくナヌザヌデヌタを含むハッシュ構造を想定しおいたす。 ハッシュには次の構造が必芁です。
https://github.com/zammad/zammad/blob/c71b0d36d4fcefdaae4e39f1859094727a3ca74c/app/models/authorization.rb#L79

あなたのポむント4.は起こりたせんでした。 OAuthログむンが成功した埌、Zammadはリク゚ストを実行したせん。

あなたのポむント4.は起こりたせんでした。 OAuthログむンが成功した埌、Zammadはリク゚ストを実行したせん。

しかし、ポむント4は、ログで発生するTOKEN_URLぞのリク゚ストですか

  • 192.168.4.142 --- [07 / Mar / 2017143323 +0100] "GET /oauth/authorize?client_id=0815&redirect_uri=http%3A%2F%2Fdomain.tld%2Fauth%2Foauth2%2Fcallback&response_type=code&state=97e53de9acb6f6a1b1af41 HTTP / 1.1 "302 840" http//domain.tld/ "" Mozilla / 5.0Windows NT 6.1; Win64; x64AppleWebKit / 537.36KHTML、GeckoなどChrome / 56.0.2924.87 Safari / 537.36 "
  • 192.168.4.64 --- [07 / Mar / 2017143323 +0100] "POST / oauth / token HTTP / 1.1" 200 216 "-" "Faraday v0.9.2"

oauth2を䜿甚したナヌザヌログむンに぀いお話したす。

response_type=codeはZammadではサポヌトされおいたせん

しかし、このresponse_type=codeは、ログむンペヌゞの[Oauth2]ボタンを抌すず、Zammadによっお蚭定されたすか
それは私のOauthプロバむダヌによっお蚭定されおいたせんか

🀔芋おみたす

こんにちは@ ThePatzen-遅れおすみたせん。 私はOAuth2プロバむダヌの郚分でしばらく過ごしたしたが、あなたのような非垞によく䌌た問題を抱えおいる人がいたす775

Django OAuth2ツヌルキットも䜿甚しおいたすか ここで@firlevapzによっお提䟛される回避策はあなたにも

あなたから聞いお楜しみにしお。

こんにちは@ thorsteneckel-問題ありたせん いいえ、このツヌルキットは䜿甚しおいたせん。 OAuth2ネむティブを実装したした。

私は正しく理解しおいたすか。 この回避策は、ナヌザヌの資栌情報を取埗するために/ api / users / meに個別のリク゚ストを行うようにzammadコヌドを倉曎したすか

ああなるほど。 はい、それはたさにそれがするこずです。 私があなたのシナリオを正しく理解すれば、それはあなたが行くための䞀般的な方法かもしれないず思いたす。 他の号で述べたように、これをZammadに取り入れようずしたす。 プロバむダヌの/api/users/me URLを構成できるずしたら、それはあなたのケヌスをカバヌしたすか

PSいいですね-ネむティブに実装したす🀓

私の芋解では、OAuth2モゞュヌルには「ナヌザヌルックアップURL」である远加の構成パラメヌタヌが必芁です。

たた、/ vendor / lib /oauth2_database.rbは次のように倉曎する必芁がありたす。

class Oauth2Database < OmniAuth::Strategies::OAuth2
  option :name, 'oauth2'

  def initialize(app, *args, &block)
    # database lookup
    config  = Setting.get('auth_oauth2_credentials') || {}
    args[0] = config['app_id']
    args[1] = config['app_secret']
    args[2][:client_options] = args[2][:client_options].merge(config.symbolize_keys)
    super
  end

  def callback_url
    full_host + script_name + callback_path
  end

  uid { raw_info['id'] }

  info do
    {
      email: raw_info['email'],
      username: raw_info['username'],
      login: raw_info['email'],
      first_name: raw_info['first_name'],
      last_name: raw_info['last_name'],
    }
  end

  extra do
    {
      'raw_info' => raw_info
    }
  end

  def raw_info
    <strong i="7">@raw_info</strong> ||= access_token.get(config['user_info_url']).parsed
  end

end

䞊蚘のコヌドはあなたの堎合に機胜したすか あなたはそれをテストしたしたか 1぀の認蚌戊略で問題ず775を解決するのは玠晎らしいこずです。

やあ

私は珟圚䞍圚です。 明日これをテストし、完了したらすぐに応答したす。

オヌストリアからの貪欲

心配ありたせん-私たちはここにいたす🀓ベルリンからオヌストリアぞのご挚拶🚀

やあ このようにログむンが機胜したす

BUT毎回新しいナヌザヌアカりントが䜜成されたす すでに存圚しおいるものにログむンするこずはできたせん

  • 線集*ナヌザヌIDフィヌルドを忘れおしたいたした。 今すべおが動䜜したす

おすすめ
たた、いく぀かのフィヌルドで構成を匷化するこずをお勧めしたす。

  • ナヌザヌルックアップのURL
  • 電子メヌルのルックアップ応答のフィヌルド名
  • ログむンのルックアップ応答のフィヌルド名
  • ルックアップのフィヌルド名-名の応答
  • ルックアップのフィヌルド名-姓の応答
  • 远加されたナヌザヌIDのルックアップ応答のフィヌルド名

次のコヌドをお勧めしたす。
`クラスOauth2Database <OmniAuth :: Strategies :: OAuth2
オプションname、 'oauth2'

def initializeapp、* args、block
デヌタベヌスルックアップ
config = Setting.get 'auth_oauth2_credentials'|| {}
args [0] = config ['app_id']
args [1] = config ['app_secret']
args [2] [client_options] = args [2] [client_options] .mergeconfig.symbolize_keys
玠晎らしい
終わり

def callback_url
full_host + script_name + callback_path
終わり

uid {raw_info [config ['user_info_id']]}

情報はありたせん
{{
メヌルraw_info [config ['user_info_email']]、
ナヌザヌ名raw_info [config ['user_info_username']]、
ログむンraw_info [config ['user_info_login']]、
first_nameraw_info [config ['user_info_firstname']]、
last_nameraw_info [config ['user_info_lastname']]、
}
終わり

䜙分なこず
{{
'raw_info' => raw_info
}
終わり

def raw_info
@raw_info || =
終わり

終了 `

次の構成フィヌルドが必芁になりたす。

  • user_info_id
  • user_info_email
  • user_info_login
  • user_info_firstname
  • user_info_lastname
  • ATからよろしく
    デビッド

良い フィヌドバックをお寄せいただきありがずうございたす。 Omniauthコヌドず私たちのコヌドをもう䞀床芋おみたした。 authorizationsデヌタベヌステヌブルに゚ントリがあるかどうかを確認できたすか これは、盎接アクセスたたはRailsコン゜ヌルAuthorization.allいずれかを介しお確認できたす。

そうでない堎合は、 uidパラメヌタが欠萜しおいる可胜性がありたす。

このトピックに぀いお話し合い、OAuth2党䜓を拡匵しおリファクタリングするこずにしたした。 これには、掚奚された構成の実装が含たれたす。 ただし、リストにはさらに緊急のタスクがあるため、これには時間がかかる堎合がありたす。 これに぀いおは別の問題を䜜成し、ここでこの問題を参照したす。

やあ

はい、認蚌テヌブルに゚ントリがありたす。
私にずっお今、すべおが機胜したす 倉曎したコヌドを䜿甚

:-)オヌストリア、むンスブルックの貪欲:-)

良い 他の人がそれから利益を埗るこずができるように、ここにあなたの゜リュヌションを投皿しおいただけたせんか/私たちのリファクタリングがあなたのカスタマむズを眮き換えるこずができるこずを保蚌できたすか

ベルリンからむンスブルックぞのご挚拶🀙

やあ 私の返事が遅くなっおごめん これが私の解決策です

class Oauth2Database < OmniAuth::Strategies::OAuth2
  option :name, 'oauth2'

  def initialize(app, *args, &block)
    # database lookup
    config = Setting.get('auth_oauth2_credentials') || {}
    args[0] = config['app_id']
    args[1] = config['app_secret']
    args[2][:client_options] = args[2][:client_options].merge(config.symbolize_keys)
    super
  end

  def callback_url
    full_host + script_name + callback_path
  end

  uid { raw_info['id'] }

  info do
    {
      email:      raw_info['email'],
      username:   raw_info['username'],
      login:      raw_info['login'],
      first_name: raw_info['firstname'],
      last_name:  raw_info['lastname'],
    }
  end

  extra do
    {
    'raw_info' => raw_info
    }
  end

  def raw_info
    <strong i="6">@raw_info</strong> ||= access_token.get('/api/me').parsed
  end

end

これは、ファむル/vendor/lib/oauth2_database.rbのコンテンツずしお蚭定する必芁がありたす。

アプリケヌションは、「raw_info」で䜿甚されるすべおのフィヌルドを䜿甚しお、url / api / meずしお応答を返す必芁がありたす。

誰かからの質問があれば遠慮なく尋ねおください:-)

Niiii​​ice ありがずう@ThePatzen コヌドを少し再フォヌマットしたした。 ずりあえず締めくくりたす。 光沢のある新しいZammadOAuth2認蚌をお楜しみください🀓

こんにちはみんな、私はアむデンティティサヌバヌずしおwso2isを䜿甚しお同じ問題を抱えおいたす。 「/ api / me」パスがzammadで応答しないこずを理解しおいたせん。これは、問題775に曞き蟌むような「/ api / users / me」でも同じです。zammadでは「/ api / v1 / users / me」のみを応答したす。しかし、私がログむンした堎合に限りたす...しかし、このセクションでは、私は再びログむンしおいないず思いたす...誰かが私を助けおくれたすか

こんにちは、みんな

wso2isがdefraw_infoを次のように倉曎するずいう問題を解決したす。

def raw_info
  <strong i="7">@raw_info</strong> ||= begin
    uri = URI.parse('https://mywso2is/oauth2/userinfo?schema=openid')
    request = Net::HTTP::Get.new(uri)
    request['Authorization'] = 'Bearer ' + access_token.token

    response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
      http.request(request)
    end
    JSON.parse(response.body)
  end
end
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡