কীক্লোকের ওআউথ 2 / ওপেনআইডি সংযোগের সমাপ্তিগুলি কী কী?


99

আমরা এসএসও সমাধান হিসাবে কীক্লোয়াককে মূল্যায়নের চেষ্টা করছি এবং এটি অনেক দিক থেকে ভাল দেখাচ্ছে তবে ডকুমেন্টেশনটি মূলত বেসিকরূপে যন্ত্রণাদায়কভাবে অনুপস্থিত।

রিয়েলমের জন্য প্রদত্ত কীক্লোয়াক ইনস্টলেশনটির http://localhost:8080/জন্য test, ওআউথ 2 অথরাইজেশন এন্ডপয়েন্ট , ওআউথ 2 টোকেন এন্ডপয়েন্ট এবং ওপেনআইডি কানেক্ট ইউজারআইফোন এন্ডপয়েন্ট ?

আমরা কাইক্লোকের নিজস্ব ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে আগ্রহী নই, আমরা স্ট্যান্ডার্ড ওআউথ 2 / ওপেনআইডি কানেক্ট ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে চাই, যেহেতু কীক্লোক সার্ভার ব্যবহার করে ক্লায়েন্ট অ্যাপ্লিকেশনগুলি বিস্তৃত ভাষায় লেখা হবে (পিএইচপি, রুবি, নোড, জাভা, সি # , কৌণিক)। সুতরাং যে উদাহরণগুলি কীক্লোক ক্লায়েন্ট ব্যবহার করে তা আমাদের জন্য ব্যবহারযোগ্য নয়।


4
পরিবর্তে আপনি কি ব্যবহার শেষ করেছেন?
সিড করুন

4
অবশেষে আমরা উপরের তলায় বোঝাতে সক্ষম হয়েছি যে অ্যাপ্লিকেশনটিতে নিজেরাই ব্যবহার করার প্রযুক্তি হিসাবে লগইন এবং সুরক্ষার সাথে ওউথের কোনও সম্পর্ক নেই এবং এটি কেবল তৃতীয় পক্ষের সাথে সংহত করার জন্য প্রাসঙ্গিক। গুগল এবং এফবি সর্বত্র এটি ব্যবহার করে আমাদের সাথে কোন প্রাসঙ্গিকতা নেই তা এই বিষয়টি ব্যাখ্যা করা কঠিন ছিল।
আমির আবির

6
@ আমিরআবিরী এটি তৃতীয় পক্ষের সংহতকরণের জন্য ব্যবহার করবে না বলে বলবে না। এটি আজকাল এর প্রধান ব্যবহার, তবে আরও বেশি সংখ্যক ইন্টারনেট সংস্থাগুলি সমর্থন করে এমন একটি প্রোটোকল হ'ল আপনি যদি নিজের উদ্যোগের পরিবেশে একাধিক অ্যাপ্লিকেশন (বা মাইক্রোসার্চেসিস) নিয়ে কাজ করে থাকেন এবং আপনি একটি এসএসও সমাধান চান তবে তা বোধগম্য হতে পারে। আসলে আমার ক্ষেত্রে, এখন 10 মাসেরও বেশি সময় ধরে কী-ক্লক ব্যবহার করা হয়েছে বলে আমি মনে করি এটি সাধারণ অ্যাপ্লিকেশনগুলির জন্যও প্রাপ্য হতে পারে, কারণ এটি ব্যবহারকারীর সমস্ত পরিচালনার ক্ষেত্রে যত্ন নেয়।
এক্সট্রিম বাইকার

উত্তর:


131

কীক্লোক 1.2 এর জন্য উপরের তথ্যটি ইউআরএল মাধ্যমে পুনরুদ্ধার করা যেতে পারে

http: // keycloakhost: keycloakport / auth / realms / {realm} /। সুপরিচিত / ওপেনিড-কনফিগারেশন

উদাহরণস্বরূপ, যদি রাজ্যের নাম ডেমো হয় :

http: // keycloakhost: keycloakport / auth / realms / ডেমো /। সুপরিচিত / openid- কনফিগারেশন

উপরের ইউআরএল থেকে একটি উদাহরণ আউটপুট:

{
    "issuer": "http://localhost:8080/auth/realms/demo",
    "authorization_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/auth",
    "token_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/token",
    "userinfo_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/userinfo",
    "end_session_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/logout",
    "jwks_uri": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/certs",
    "grant_types_supported": [
        "authorization_code",
        "refresh_token",
        "password"
    ],
    "response_types_supported": [
        "code"
    ],
    "subject_types_supported": [
        "public"
    ],
    "id_token_signing_alg_values_supported": [
        "RS256"
    ],
    "response_modes_supported": [
        "query"
    ]
}

Https://issues.jboss.org/browse/KEYCLOAK-571 এ তথ্য পেয়েছে

দ্রষ্টব্য: আপনার ক্লায়েন্টকে বৈধ পুনঃনির্দেশ ইউআরআই তালিকায় যুক্ত করতে হতে পারে


4
এরপরে আমরা কীক্লোক ব্যবহার করে ফেলে রেখেছি, তাই আমি যাচাই করতে পারি না।
আমির আবিরি

কোন ওয়েব অ্যাপ্লিকেশনটিতে লগইন লিঙ্ক থাকতে কোন ইউআরএল ব্যবহার করবে? ইউ ঐ সব চেষ্টা করেছিলেন কিন্তু তারা তা করতে না
CED

4
@ আমিরআবিরী আপনার কীক্লোকের বিকল্প কী? আমি বর্তমানে এটি মূল্যায়ন করছি। এটি ইউআইয়ের মতো এবং আমার সমস্ত ব্যবহারকারী এটির দ্বারা পরিচালিত করতে চাই তবে এতে আমার GoLang অ্যাপ্লিকেশনটি সংযুক্ত করতে আমার খুব কষ্ট হচ্ছে।
তারিখ

@ টিরিয়ন একটির জন্য ডাব্লুএসও 2 পরিচয় সার্ভার রয়েছে।
বলতে পারবেন না

20

সংস্করণ 1.9.3. ফাইনালের সাথে, কীক্লোকে বেশ কয়েকটি ওপেনআইডি এন্ডপয়েন্ট রয়েছে। এগুলি পাওয়া যাবে /auth/realms/{realm}/.well-known/openid-configuration। আপনার ক্ষেত্রটির নামকরণ করা হয়েছে তা ধরে নিলে demo, শেষ প্রান্তটি এর মতো একটি JSON প্রতিক্রিয়া তৈরি করবে।

{
  "issuer": "http://localhost:8080/auth/realms/demo",
  "authorization_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/auth",
  "token_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/token",
  "token_introspection_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/token/introspect",
  "userinfo_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/userinfo",
  "end_session_endpoint": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/logout",
  "jwks_uri": "http://localhost:8080/auth/realms/demo/protocol/openid-connect/certs",
  "grant_types_supported": [
    "authorization_code",
    "implicit",
    "refresh_token",
    "password",
    "client_credentials"
  ],
  "response_types_supported": [
    "code",
    "none",
    "id_token",
    "token",
    "id_token token",
    "code id_token",
    "code token",
    "code id_token token"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ],
  "response_modes_supported": [
    "query",
    "fragment",
    "form_post"
  ],
  "registration_endpoint": "http://localhost:8080/auth/realms/demo/clients-registrations/openid-connect"
}

যতদূর আমি খুঁজে পেয়েছি, এই শেষ পয়েন্টগুলি Oauth 2.0 বৈশিষ্ট্য প্রয়োগ করে ।


দ্রষ্টব্য যে ওপেনআইডি কানেক্টটি মূলত মানগুলির একটি সেট, যার মধ্যে OAuth 2 একটি (জেডব্লিউটি অন্যটি)
স্টিজন ডি উইট

4
এই মন্তব্যটি কিছুটা বিভ্রান্তিকর। OAuth2 অনুমোদনের জন্য একটি প্রোটোকল বাস্তবায়নের একটি মান। ওআইডিসি হ'ল একটি মান যা সনাক্তকরণের জন্য OAuth2 এর শীর্ষে কাজ করে।
থমাস ল্যান

16

প্রকৃতপক্ষে লিঙ্কটি .well-knowআপনার ক্ষেত্রের সেটিংসের প্রথম ট্যাবে রয়েছে - তবে লিঙ্কটি লিঙ্কটির মতো দেখাচ্ছে না, তবে পাঠ্য বাক্সের মান হিসাবে ... খারাপ ইউআই ডিজাইন। রাজ্যের জেনারেল ট্যাবের স্ক্রিনশট


15

চারপাশে অনেক খোঁড়াখুঁড়ি করার পরে আমরা তথ্য কম-বেশি স্ক্র্যাপ করতে সক্ষম হয়েছি (মূলত কীক্লোকের নিজস্ব জেএস ক্লায়েন্ট লিব থেকে):

  • অনুমোদনের সমাপ্তি: /auth/realms/{realm}/tokens/login
  • টোকেন শেষ পয়েন্ট: /auth/realms/{realm}/tokens/access/codes

ওপেনআইডি কানেক্ট ইউজারআইনফো হিসাবে এখনই (১.১.০. ফিনাল) কীক্লোইক এই শেষ পয়েন্টটি বাস্তবায়ন করে না, সুতরাং এটি সম্পূর্ণ ওপেনআইডি সংযোগের অনুবর্তী নয়। যাইহোক, ইতিমধ্যে একটি প্যাচ রয়েছে যা যোগ করে যে এই লেখাটি 1.2.x অন্তর্ভুক্ত করা উচিত।

তবে - অদ্ভুতভাবে কিক্লোক id_tokenঅ্যাক্সেস টোকেনের সাথে একসাথে ফিরে পাঠায় । উভয় id_tokenএবং access_tokenকরছে স্বাক্ষরিত JWTs এবং টোকেন কি থেকে OpenID এর কি, অর্থাত আছেন:

"iss":  "{realm}"
"sub":  "5bf30443-0cf7-4d31-b204-efd11a432659"
"name": "Amir Abiri"
"email: "..."

সুতরাং কীক্লোক ১.১.x পুরোপুরি ওপেনআইডি সংযোগের সাথে সঙ্গতিপূর্ণ নয়, এটি ওপেনআইডি সংযুক্ত ভাষায় "স্পোক" করে।


7

সংস্করণে 1.9.0 সমস্ত শেষ পয়েন্ট সহ জসন ঠিকানা / প্রমাণ / রিয়েলস / {রিয়েলমে}

  • অনুমোদনের শেষ পয়েন্ট: / প্রমাণী / রাজস্ব / {রিয়েল} / অ্যাকাউন্ট
  • টোকেন শেষ পয়েন্ট: / আথ / রিয়েলস / {রিয়েল} / প্রোটোকল / ওপেনআইড-কানেক্ট

6

আপনি এডমিন কনসোল -> রিয়েলম সেটিংস -> এন্ডপয়েন্টস ক্ষেত্রের হাইপারলিঙ্কে ক্লিক করেও এই তথ্যটি দেখতে পাবেন।

এখানে চিত্র বর্ণনা লিখুন


4
আপনি কি জানেন যে এই শেষ পয়েন্টগুলির জন্য ডকুমেন্টেশন কোথায় পাওয়া যাবে?
রাার্টস

আপনার মনে হয় ডকুমেন্টেশনটি ব্যবহারকারীর পক্ষে কিছুটা
রোহিত কুমার

3

কীক্লোক সংস্করণ: 4.6.0

  • টোকেনআরএল: [ডোমেন] / প্রমাণ / রিয়েলস / {REALM_NAME} / প্রোটোকল / ওপেনআইড-কানেক্ট / টোকেন
  • এথুআরএল: [ডোমেন] / আথ / রিয়েলস / {REALM_NAME _NAME / প্রোটোকল / ওপেনআইড-কানেক্ট / আথ

হ্যাঁ, এটি 5.0 এর জন্যও বৈধ। তারা এখানে নথিভুক্ত করা হয়েছে: keycloak.org/docs/5.0/server_admin/…
জেপি

2

এফকিউডিএন / অথথ / রিয়েলम्स / {রিয়েলম_নেম} /। সুপরিচিত / ওপেনিড-কনফিগারেশন

আপনি এখানে সমস্ত কিছু দেখতে পাবেন, এছাড়াও যদি পরিচয় প্রদানকারীও কীক্লোয়াক হয় তবে এই ইউআরএলটি খাওয়ানো যদি অন্য পরিচয় সরবরাহকারীদের সমর্থন করে এবং তারা ইতিমধ্যে এটি পরিচালনা করেছে তবে সবকিছু ঠিকভাবে সেটআপ করবে they


2

নিম্নলিখিত লিঙ্কটি জ্যাকসন নথি সরবরাহ করে যা কীক্লোক সম্পর্কে মেটাডেটা বর্ণনা করে

/auth/realms/{realm-name}/.well-known/openid-configuration

masterরাজ্যের জন্য কীক্লোক .0.০.১ এর সাথে নিম্নলিখিত তথ্যটি প্রতিবেদন করা হয়েছে

{  
   "issuer":"http://localhost:8080/auth/realms/master",
   "authorization_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/auth",
   "token_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/token",
   "token_introspection_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/token/introspect",
   "userinfo_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/userinfo",
   "end_session_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/logout",
   "jwks_uri":"http://localhost:8080/auth/realms/master/protocol/openid-connect/certs",
   "check_session_iframe":"http://localhost:8080/auth/realms/master/protocol/openid-connect/login-status-iframe.html",
   "grant_types_supported":[  
      "authorization_code",
      "implicit",
      "refresh_token",
      "password",
      "client_credentials"
   ],
   "response_types_supported":[  
      "code",
      "none",
      "id_token",
      "token",
      "id_token token",
      "code id_token",
      "code token",
      "code id_token token"
   ],
   "subject_types_supported":[  
      "public",
      "pairwise"
   ],
   "id_token_signing_alg_values_supported":[  
      "PS384",
      "ES384",
      "RS384",
      "HS256",
      "HS512",
      "ES256",
      "RS256",
      "HS384",
      "ES512",
      "PS256",
      "PS512",
      "RS512"
   ],
   "userinfo_signing_alg_values_supported":[  
      "PS384",
      "ES384",
      "RS384",
      "HS256",
      "HS512",
      "ES256",
      "RS256",
      "HS384",
      "ES512",
      "PS256",
      "PS512",
      "RS512",
      "none"
   ],
   "request_object_signing_alg_values_supported":[  
      "PS384",
      "ES384",
      "RS384",
      "ES256",
      "RS256",
      "ES512",
      "PS256",
      "PS512",
      "RS512",
      "none"
   ],
   "response_modes_supported":[  
      "query",
      "fragment",
      "form_post"
   ],
   "registration_endpoint":"http://localhost:8080/auth/realms/master/clients-registrations/openid-connect",
   "token_endpoint_auth_methods_supported":[  
      "private_key_jwt",
      "client_secret_basic",
      "client_secret_post",
      "client_secret_jwt"
   ],
   "token_endpoint_auth_signing_alg_values_supported":[  
      "RS256"
   ],
   "claims_supported":[  
      "aud",
      "sub",
      "iss",
      "auth_time",
      "name",
      "given_name",
      "family_name",
      "preferred_username",
      "email"
   ],
   "claim_types_supported":[  
      "normal"
   ],
   "claims_parameter_supported":false,
   "scopes_supported":[  
      "openid",
      "address",
      "email",
      "microprofile-jwt",
      "offline_access",
      "phone",
      "profile",
      "roles",
      "web-origins"
   ],
   "request_parameter_supported":true,
   "request_uri_parameter_supported":true,
   "code_challenge_methods_supported":[  
      "plain",
      "S256"
   ],
   "tls_client_certificate_bound_access_tokens":true,
   "introspection_endpoint":"http://localhost:8080/auth/realms/master/protocol/openid-connect/token/introspect"
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.