{"id":609,"date":"2021-07-14T16:08:58","date_gmt":"2021-07-14T08:08:58","guid":{"rendered":"https:\/\/choson.lifenet.com.tw\/?p=609"},"modified":"2021-07-14T16:08:58","modified_gmt":"2021-07-14T08:08:58","slug":"openid-connect","status":"publish","type":"post","link":"https:\/\/choson.lifenet.com.tw\/?p=609","title":{"rendered":"OpenID Connect"},"content":{"rendered":"\n<p><img decoding=\"async\" src=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160uupAyeEQem.png\" alt=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160uupAyeEQem.png\"><br>OAuth 2.0 \u6307\u5b9a\u4e86\u5b58\u53d6\u8cc7\u6e90\u7684\u5b58\u53d6\u4ee4\u724c\uff0c\u4f46\u5b83\u6c92\u6709\u63d0\u4f9b\u63d0\u4f9b\u8eab\u4efd\u4fe1\u606f\uff08ID Token\uff09\u7684\u6a19\u6e96\u65b9\u6cd5\uff0c\u9019\u5c31\u662f OpenID Connect\uff08ODIC\uff09\u51fa\u73fe\u7684\u539f\u56e0\u3002<br>. \uff08\u8eab\u4efd\u3001\u8a8d\u8b49\uff09+ OAuth 2.0 = OpenID Connect<br>. OIDC \u662f\u7b2c\u4e09\u4ee3OpenID \u6280\u8853\uff0c\u5b83\u8207 OAuth 2.0 \u5c0d\u9f4a\u4e26\u5f9e XML \u5207\u63db\u5230 JSON\u3002<br>. OIDC \u901a\u904eID \u4ee4\u724c\u8655\u7406\u8eab\u4efd\u548c\u8eab\u4efd\u9a57\u8b49\uff0c\u800c OAuth 2.0 \u901a\u904e\u5b58\u53d6\/\u627f\u8f09\u4ee4\u724c\u8655\u7406\u6388\u6b0a\u3002<br>. \u7531\u65bc OIDC \u5efa\u7acb\u5728 OAuth 2.0 \u4e4b\u4e0a\uff0c\u56e0\u6b64OpenID \u63d0\u4f9b\u7a0b\u5e8f\u8207OAuth 2.0 \u6388\u6b0a\u670d\u52d9\u5668\u57fa\u672c\u76f8\u540c\u3002<\/p>\n\n\n\n<p><strong>\u8eab\u4efd\u4ee4\u724c(ID Token)<\/strong><br><img decoding=\"async\" src=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160RdZJzsGb1Q.png\" alt=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160RdZJzsGb1Q.png\"><br>-\u7406\u89e3 ID Token \u7531 Takahiko Kawasaki<\/p>\n\n\n\n<p><strong>\u4e0d\u8a18\u540d\u4ee4\u724c\uff08Bearer Token\uff09<\/strong><br>\u64c1\u6709\u4e0d\u8a18\u540d\u4ee4\u724c\uff08\u201c\u6301\u6709\u8005\u201d\uff09\u7684\u4efb\u4f55\u4e00\u65b9\u90fd\u53ef\u4ee5\u4f7f\u7528\u5b83\u4f86\u5b58\u53d6\u76f8\u95dc\u8cc7\u6e90\uff08\u7121\u9700\u8b49\u660e\u64c1\u6709\u52a0\u5bc6\u5bc6\u9470\uff09\u3002\u70ba\u4e86\u9632\u6b62\u6feb\u7528\uff0c\u9700\u8981\u4fdd\u8b77\u4e0d\u8a18\u540d\u4ee3\u5e63\u5728\u5b58\u5132\u548c\u904b\u8f38\u904e\u7a0b\u4e2d\u4e0d\u88ab\u6d29\u9732\u3002<br>\u4f86\u6e90\uff1a<a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6750\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 6750<\/a><br><a href=\"https:\/\/jasonwatmore.com\/post\/2021\/04\/30\/net-5-jwt-authentication-tutorial-with-example-api\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft.AspNetCore.Authentication.JwtBearer<\/a>\u662f\u4e00\u500b\u8edf\u9ad4\u7d44\u4ef6\uff0c\u7528\u65bc\u8655\u7406 .NET 5.0 \u4e2d\u7684\u627f\u8f09\u4ee4\u724c\u3002<\/p>\n\n\n\n<p><strong>OpenID Connect (OIDC) \u548c OAuth 2.0<\/strong><br><a href=\"http:\/\/openid.net\/connect\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenID Connect<\/a>&nbsp;\u662f\u4e00\u7a2e\u57fa\u65bc OAuth 2.0 \u7cfb\u5217\u898f\u7bc4\u7684\u53ef\u4e92\u64cd\u4f5c\u7684\u8eab\u4efd\u9a57\u8b49\u5354\u8b70\u3002\u5b83\u4f7f\u7528\u7c21\u55ae\u7684 REST\/JSON \u6d88\u606f\u6d41\uff0c\u5176\u8a2d\u8a08\u76ee\u6a19\u662f\u201c\u8b93\u7c21\u55ae\u7684\u4e8b\u60c5\u8b8a\u5f97\u7c21\u55ae\uff0c\u8b93\u8907\u96dc\u7684\u4e8b\u60c5\u6210\u70ba\u53ef\u80fd\u201d\u3002\u8207\u4e4b\u524d\u7684\u4efb\u4f55\u8eab\u4efd\u5354\u8b70\u76f8\u6bd4\uff0c\u958b\u767c\u4eba\u54e1\u96c6\u6210\u8d77\u4f86\u975e\u5e38\u5bb9\u6613\u3002<br>OpenID Connect \u4f7f\u958b\u767c\u4eba\u54e1\u7121\u9700\u64c1\u6709\u548c\u7ba1\u7406\u5bc6\u78bc\u6587\u4ef6\u5373\u53ef\u8de8\u7db2\u7ad9\u548c\u61c9\u7528\u7a0b\u5e8f\u9a57\u8b49\u5176\u7528\u6236\u3002\u5c0d\u65bc\u61c9\u7528\u7a0b\u5e8f\u69cb\u5efa\u5668\uff0c\u5b83\u70ba\u4ee5\u4e0b\u554f\u984c\u63d0\u4f9b\u4e86\u4e00\u500b\u5b89\u5168\u7684\u53ef\u9a57\u8b49\u7b54\u6848\uff1a\u201c\u7576\u524d\u4f7f\u7528\u8207\u6211\u9023\u63a5\u7684\u700f\u89bd\u5668\u6216\u672c\u6a5f\u61c9\u7528\u7a0b\u5e8f\u7684\u4eba\u7684\u8eab\u4efd\u662f\u4ec0\u9ebc\uff1f\u201d<br>OpenID Connect \u5141\u8a31\u6240\u6709\u985e\u578b\u7684\u5ba2\u6236\u7aef\uff08\u5305\u62ec\u57fa\u65bc\u700f\u89bd\u5668\u7684 JavaScript \u548c\u672c\u6a5f\u79fb\u52d5\u61c9\u7528\u7a0b\u5e8f\uff09\u555f\u52d5\u767b\u9304\u6d41\u7a0b\u4e26\u63a5\u6536\u6709\u95dc\u767b\u9304\u7528\u6236\u8eab\u4efd\u7684\u53ef\u9a57\u8b49\u65b7\u8a00\u3002<br>\uff08\u8eab\u4efd\u3001\u8a8d\u8b49\uff09+ OAuth 2.0 = OpenID Connect<br>\u4f86\u6e90\uff1a<a href=\"https:\/\/openid.net\/connect\/faq\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenID Connect \u5e38\u898b\u554f\u984c\u548c\u554f\u7b54<\/a><\/p>\n\n\n\n<p><strong>OpenID \u7684\u65e9\u671f\u7248\u672c\uff08Earlier Versions of OpenID\uff09<\/strong><br>OpenID Connect \u662f\u7b2c\u4e09\u4ee3 OpenID \u6280\u8853\u3002\u7b2c\u4e00\u500b\u662f\u6700\u521d\u7684 OpenID\uff0c\u9019\u662f\u4e00\u500b\u6709\u9060\u898b\u7684\u5de5\u5177\uff0c\u5f9e\u672a\u7372\u5f97\u592a\u591a\u5546\u696d\u63a1\u7528\uff0c\u4f46\u8b93\u884c\u696d\u9818\u5c0e\u8005\u601d\u8003\u4ec0\u9ebc\u662f\u53ef\u80fd\u7684\u3002OpenID 2.0\u8003\u616e\u5f97\u66f4\u5468\u5168\uff0c\u63d0\u4f9b\u4e86\u51fa\u8272\u7684\u5b89\u5168\u6027\uff0c\u4e26\u4e14\u5728\u6b63\u78ba\u5be6\u65bd\u6642\u904b\u884c\u826f\u597d\u3002\u7136\u800c\uff0c\u5b83\u53d7\u5230\u4e00\u4e9b\u8a2d\u8a08\u9650\u5236\u2014\u2014\u5176\u4e2d\u6700\u91cd\u8981\u7684\u662f\u4f9d\u8cf4\u65b9\u53ef\u4ee5\u662f\u7db2\u9801\u800c\u4e0d\u662f\u672c\u6a5f\u61c9\u7528\u7a0b\u5e8f\uff1b\u5b83\u9084\u4f9d\u8cf4\u65bcXML\uff0c\u5c0e\u81f4\u4e00\u4e9b\u63a1\u7528\u554f\u984c\u3002<br>OpenID Connect \u7684\u76ee\u6a19\u662f\u5c0d\u958b\u767c\u4eba\u54e1\u66f4\u52a0\u53cb\u597d\uff0c\u540c\u6642\u64f4\u5c55\u53ef\u4ee5\u4f7f\u7528\u7684\u7528\u4f8b\u96c6\u3002\u5b83\u5df2\u7d93\u5728\u9019\u65b9\u9762\u53d6\u5f97\u4e86\u6210\u529f\uff1b\u6709\u5927\u898f\u6a21\u904b\u884c\u7684\u751f\u7522\u90e8\u7f72\u3002\u4efb\u4f55\u6709\u8db3\u5920\u7d93\u9a57\u901a\u904e HTTP \u767c\u9001\u548c\u63a5\u6536 JSON \u6d88\u606f\u7684\u7a0b\u5e8f\u54e1\uff08\u73fe\u5728\u5927\u591a\u6578\u662f\u9019\u6a23\uff09\u61c9\u8a72\u80fd\u5920\u4f7f\u7528\u6a19\u6e96\u7684\u52a0\u5bc6\u7c3d\u540d\u9a57\u8b49\u5eab\u5f9e\u982d\u958b\u59cb\u5be6\u73fe OpenID Connect\u3002\u5e78\u904b\u7684\u662f\uff0c\u5927\u591a\u6578\u751a\u81f3\u4e0d\u5fc5\u8d70\u90a3\u9ebc\u9060\uff0c\u56e0\u70ba\u6709\u5f88\u597d\u7684\u5546\u696d\u548c\u958b\u6e90\u5eab\u4f86\u8655\u7406\u8eab\u4efd\u9a57\u8b49\u6a5f\u5236\u3002<br>\u4f86\u6e90\uff1a<a href=\"https:\/\/openid.net\/connect\/faq\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenID Connect \u5e38\u898b\u554f\u984c\u548c\u554f\u7b54<\/a><\/p>\n\n\n\n<p><strong>OAuth 2.0 \u62bd\u8c61\u5354\u8b70\u6d41\u7a0b\uff08OAuth 2.0 Abstract Protocol Flow\uff09<\/strong><br><img decoding=\"async\" src=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160QsJJ897KLw.png\" alt=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160QsJJ897KLw.png\"><br>OAuth 2.0 Abstract Protocol Flow<\/p>\n\n\n\n<p><strong>OIDC \u5354\u8b70\u6d41\u7a0b\uff08OIDC Protocol Flow\uff09<\/strong><br><a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html\" target=\"_blank\" rel=\"noreferrer noopener\">OpenID Connect<\/a>\u5354\u8b70\uff0c\u5728\u62bd\u8c61\u7684\uff0c\u9075\u5faa\u4e0b\u5217\u6b65\u9a5f\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>RP\uff08\u5ba2\u6236\u7aef\uff09\u5411 OpenID \u63d0\u4f9b\u8005\uff08OP\uff09\u767c\u9001\u8acb\u6c42\u3002<\/li><li>OP \u5c0d\u6700\u7d42\u7528\u6236\u9032\u884c\u8eab\u4efd\u9a57\u8b49\u4e26\u7372\u5f97\u6388\u6b0a\u3002<\/li><li>OP \u4f7f\u7528 ID \u4ee4\u724c\u548c\u901a\u5e38\u7684\u5b58\u53d6\u4ee4\u724c\u9032\u884c\u97ff\u61c9\u3002<\/li><li>RP \u53ef\u4ee5\u5411 UserInfo Endpoint \u767c\u9001\u5e36\u6709\u5b58\u53d6\u4ee4\u724c\u7684\u8acb\u6c42\u3002<\/li><li>UserInfo \u7aef\u9ede\u8fd4\u56de\u6709\u95dc\u6700\u7d42\u7528\u6236\u7684\u8072\u660e\u3002<\/li><\/ol>\n\n\n\n<p>\u9019\u4e9b\u6b65\u9a5f\u5982\u4e0b\u5716\u6240\u793a\uff1a<br><img decoding=\"async\" src=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160vtYea3XxBE.png\" alt=\"https:\/\/ithelp.ithome.com.tw\/upload\/images\/20210714\/20132160vtYea3XxBE.png\"><br>OIDC Protocol Flow<br><strong>\u53c3\u8003<\/strong><br>.&nbsp;<a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6749\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 6749\uff1aOAuth 2.0 \u6388\u6b0a\u6846\u67b6<\/a><br>.&nbsp;<a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6750\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 6750\uff1aOAuth 2.0 \u6388\u6b0a\u6846\u67b6\uff1a\u4e0d\u8a18\u540d\u4ee4\u724c\u7684\u4f7f\u7528<\/a><br>.&nbsp;<a href=\"https:\/\/oauth.net\/2\/\" target=\"_blank\" rel=\"noreferrer noopener\">OAuth 2.0<\/a><br>.&nbsp;<a href=\"https:\/\/openid.net\/connect\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u6b61\u8fce\u4f7f\u7528 OpenID Connect<\/a><br>.&nbsp;<a href=\"https:\/\/openid.net\/connect\/faq\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenID Connect \u5e38\u898b\u554f\u984c\u548c\u554f\u7b54<\/a><br>.&nbsp;<a href=\"https:\/\/benohead.com\/blog\/2018\/07\/05\/oauth-2-0-openid-connect-explained\/\" target=\"_blank\" rel=\"noreferrer noopener\">OAuth 2.0 \/ OpenID Connect \u8aaa\u660e<\/a><br>.&nbsp;<a href=\"https:\/\/darutk.medium.com\/understanding-id-token-5f83f50fa02e\" target=\"_blank\" rel=\"noreferrer noopener\">\u4e86\u89e3 ID \u4ee4\u724c<\/a><br>.&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory-b2c\/idp-pass-through-user-flow?pivots=b2c-user-flow\" target=\"_blank\" rel=\"noreferrer noopener\">\u5c07\u6a19\u8b58\u63d0\u4f9b\u7a0b\u5e8f\u5b58\u53d6\u4ee4\u724c\u50b3\u905e\u5230 Azure Active Directory B2C \u4e2d\u7684\u61c9\u7528\u7a0b\u5e8f<\/a><br>.&nbsp;<a href=\"https:\/\/www.c-sharpcorner.com\/article\/accesstoken-vs-id-token-vs-refresh-token-what-whywhen\/\" target=\"_blank\" rel=\"noreferrer noopener\">AccessToken Vs ID Token Vs Refresh Token \u2013 \u4ec0\u9ebc\uff1f\u70ba\u4ec0\u9ebc\uff1f\u4ec0\u9ebc\u6642\u5019\uff1f<\/a><\/p>\n\n\n\n<p>\u8cc7\u6599\u4f86\u6e90\uff1a&nbsp;<a href=\"https:\/\/wentzwu.com\/2021\/06\/22\/cissp-practice-questions-20210622\/\" target=\"_blank\" rel=\"noreferrer noopener\">Wentz Wu QOTD-20210622<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OAuth 2.0 \u6307\u5b9a\u4e86\u5b58\u53d6\u8cc7\u6e90\u7684\u5b58\u53d6\u4ee4\u724c\uff0c\u4f46\u5b83\u6c92\u6709\u63d0\u4f9b\u63d0\u4f9b\u8eab\u4efd\u4fe1\u606f\uff08ID Token\uff09\u7684\u6a19\u6e96\u65b9\u6cd5\uff0c\u9019\u5c31\u662f  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-609","post","type-post","status-publish","format-standard","hentry","category-cisspcertified-information-systems-security-professional"],"_links":{"self":[{"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=609"}],"version-history":[{"count":1,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/609\/revisions"}],"predecessor-version":[{"id":610,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/609\/revisions\/610"}],"wp:attachment":[{"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/choson.lifenet.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}