摘自: http://studyhost.blogspot.com/2017/01/oauthsso.html?m=1
<
iframe src=\”http://studyhost.blogspot.com/2017/01/oauthsso.html?m=1\” class=\”iframe-full-content\”>
window.setTimeout(function() {
document.body.className = document.body.className.replace(\’loading\’, \’\’);
}, 10);
var BLOG_BASE_IMAGE_URL = \’https://img2.blogblog.com/img\’;var BLOG_LANG_DIR = \’ltr\’;window[\’__wavt\’] = \’AOuZoY41cF43Ay-h6w4rfJaRWTECbwnjxQ:1546051481705\’;_WidgetManager._Init(\’//www.blogger.com/rearrange?blogID\\x3d4291069679343025964\’,\’//studyhost.blogspot.com/2017/01/oauthsso.html?m\\x3d1\’,\’4291069679343025964\’);
_WidgetManager._SetDataContext([{\’name\’: \’blog\’, \’data\’: {\’blogId\’: \’4291069679343025964\’, \’title\’: \’.NET Walker\’, \’url\’: \’http://studyhost.blogspot.com/2017/01/oauthsso.html?m\\x3d1\’, \’canonicalUrl\’: \’http://studyhost.blogspot.com/2017/01/oauthsso.html\’, \’homepageUrl\’: \’http://studyhost.blogspot.com/?m\\x3d1\’, \’searchUrl\’: \’http://studyhost.blogspot.com/search\’, \’canonicalHomepageUrl\’: \’http://studyhost.blogspot.com/\’, \’blogspotFaviconUrl\’: \’http://studyhost.blogspot.com/favicon.ico\’, \’bloggerUrl\’: \’https://www.blogger.com\’, \’hasCustomDomain\’: false, \’httpsEnabled\’: true, \’enabledCommentProfileImages\’: true, \’gPlusViewType\’: \’FILTERED_POSTMOD\’, \’adultContent\’: false, \’analyticsAccountNumber\’: \’\’, \’encoding\’: \’UTF-8\’, \’locale\’: \’zh-TW\’, \’localeUnderscoreDelimited\’: \’zh_tw\’, \’languageDirection\’: \’ltr\’, \’isPrivate\’: false, \’isMobile\’: true, \’isMobileRequest\’: true, \’mobileClass\’: \’ mobile\’, \’isPrivateBlog\’: false, \’feedLinks\’: \’\\x3clink rel\\x3d\\x22alternate\\x22 type\\x3d\\x22application/atom+xml\\x22 title\\x3d\\x22.NET Walker – Atom\\x22 href\\x3d\\x22http://studyhost.blogspot.com/feeds/posts/default\\x22 /\\x3e\\n\\x3clink rel\\x3d\\x22alternate\\x22 type\\x3d\\x22application/rss+xml\\x22 title\\x3d\\x22.NET Walker – RSS\\x22 href\\x3d\\x22http://studyhost.blogspot.com/feeds/posts/default?alt\\x3drss\\x22 /\\x3e\\n\\x3clink rel\\x3d\\x22service.post\\x22 type\\x3d\\x22application/atom+xml\\x22 title\\x3d\\x22.NET Walker – Atom\\x22 href\\x3d\\x22https://www.blogger.com/feeds/4291069679343025964/posts/default\\x22 /\\x3e\\n\\n\\x3clink rel\\x3d\\x22alternate\\x22 type\\x3d\\x22application/atom+xml\\x22 title\\x3d\\x22.NET Walker – Atom\\x22 href\\x3d\\x22http://studyhost.blogspot.com/feeds/6738269321690393495/comments/default\\x22 /\\x3e\\n\’, \’meTag\’: \’\’, \’adsenseHostId\’: \’ca-host-pub-1556223355139109\’, \’adsenseHasAds\’: false, \’ieCssRetrofitLinks\’: \’\\x3c!–[if IE]\\x3e\\x3cscript type\\x3d\\x22text/javascript\\x22 src\\x3d\\x22https://www.blogger.com/static/v1/jsbin/864213505-ieretrofit.js\\x22\\x3e\\x3c/script\\x3e\\n\\x3c![endif]–\\x3e\’, \’view\’: \’\’, \’dynamicViewsCommentsSrc\’: \’//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js\’, \’dynamicViewsScriptSrc\’: \’//www.blogblog.com/dynamicviews/7a0cbfc92c51aced\’, \’plusOneApiSrc\’: \’https://apis.google.com/js/plusone.js\’, \’sharing\’: {\’platforms\’: [{\’name\’: \’取得連結\’, \’key\’: \’link\’, \’shareMessage\’: \’取得連結\’, \’target\’: \’\’}, {\’name\’: \’Facebook\’, \’key\’: \’facebook\’, \’shareMessage\’: \’分享到 Facebook\’, \’target\’: \’facebook\’}, {\’name\’: \’BlogThis!\’, \’key\’: \’blogThis\’, \’shareMessage\’: \’BlogThis!\’, \’target\’: \’blog\’}, {\’name\’: \’Twitter\’, \’key\’: \’twitter\’, \’shareMessage\’: \’分享到 Twitter\’, \’target\’: \’twitter\’}, {\’name\’: \’Pinterest\’, \’key\’: \’pinterest\’, \’shareMessage\’: \’分享到 Pinterest\’, \’target\’: \’pinterest\’}, {\’name\’: \’Google+\’, \’key\’: \’googlePlus\’, \’shareMessage\’: \’分享到 Google+\’, \’target\’: \’googleplus\’}, {\’name\’: \’以電子郵件傳送\’, \’key\’: \’email\’, \’shareMessage\’: \’以電子郵件傳送\’, \’target\’: \’email\’}], \’googlePlusShareButtonWidth\’: 300, \’googlePlusBootstrap\’: \’\\x3cscript type\\x3d\\x22text/javascript\\x22\\x3ewindow.___gcfg \\x3d {\\x27lang\\x27: \\x27zh_TW\\x27};\\x3c/script\\x3e\’}, \’hasCustomJumpLinkMessage\’: false, \’jumpLinkMessage\’: \’閱讀完整內容\’, \’pageType\’: \’item\’, \’postId\’: \’6738269321690393495\’, \’postImageThumbnailUrl\’: \’https://lh3.googleusercontent.com/-PywZ1rsFfXs/WG8BdWWP4vI/AAAAAAAAAzM/NHBmp-aCljg/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax\\x3d800\’, \’postImageUrl\’: \’http://arock.blob.core.windows.net/blogdata201701/01-131813-359e594f-646a-44df-bc25-43e148243f08.png\’, \’pageName\’: \’一次搞懂OAuth與SSO在幹什麼?\’, \’pageTitle\’: \’.NET Walker: 一次搞懂OAuth與SSO在幹什麼?\’}}, {\’name\’: \’features\’, \’data\’: {\’sharing_get_link_dialog\’: \’true\’, \’sharing_native\’: \’false\’}}, {\’name\’: \’messages\’, \’data\’: {\’edit\’: \’編輯\’, \’linkCopiedToClipboard\’: \’已將連結複製到剪貼簿!\’, \’ok\’: \’確定\’, \’postLink\’: \’文章連結\’}}, {\’name\’: \’template\’, \’data\’: {\’name\’: \’Awesome Inc.\’, \’localizedName\’: \’頂尖企業\’, \’isResponsive\’: false, \’isAlternateRendering\’: true, \’isCustom\’: false, \’variant\’: \’light\’, \’variantId\’: \’light\’}}, {\’name\’: \’view\’, \’data\’: {\’classic\’: {\’name\’: \’classic\’, \’url\’: \’?view\\x3dclassic\’}, \’flipcard\’: {\’name\’: \’flipcard\’, \’url\’: \’?view\\x3dflipcard\’}, \’magazine\’: {\’name\’: \’magazine\’, \’url\’: \’?view\\x3dmagazine\’}, \’mosaic\’: {\’name\’: \’mosaic\’, \’url\’: \’?view\\x3dmosaic\’}, \’sidebar\’: {\’name\’: \’sidebar\’, \’url\’: \’?view\\x3dsidebar\’}, \’snapshot\’: {\’name\’: \’snapshot\’, \’url\’: \’?view\\x3dsnapshot\’}, \’timeslide\’: {\’name\’: \’timeslide\’, \’url\’: \’?view\\x3dtimeslide\’}, \’isMobile\’: true, \’title\’: \’一次搞懂OAuth與SSO在幹什麼?\’, \’description\’: \’最近的 Line Notify 、 Line Login ,以及前一陣子的 Microsoft Graph API ,全都使用到了OAuth作為用戶身分驗證以及資源存取的基礎。但很多讀者會卡在OAuth的運作流程上,根本的原因是不理解OAuth到底是幹嘛的?其存在的目的為何?以及…\’, \’featuredImage\’: \’https://lh3.googleusercontent.com/proxy/vvDdvGOWrEWYoHAI5uhoLSh44IbnOo76luSMBu2sqrXNcEuGoJrDDXEd_KGabDNKbae4Hr8Il8dVCZm6f3csj2j12zvjVFZuWcA1TpkYhEISq8YKMno86zHarsm4irq_48MptFpOaDKKKnmr2UZSs-SaRRNxyvVh\’, \’url\’: \’http://studyhost.blogspot.com/2017/01/oauthsso.html?m\\x3d1\’, \’type\’: \’item\’, \’isSingleItem\’: true, \’isMultipleItems\’: false, \’isError\’: false, \’isPage\’: false, \’isPost\’: true, \’isHomepage\’: false, \’isArchive\’: false, \’isLabelSearch\’: false, \’postId\’: 6738269321690393495}}]);
_WidgetManager._RegisterWidget(\’_HeaderView\’, new _WidgetInfo(\’Header1\’, \’header\’, document.getElementById(\’Header1\’), {}, \’displayModeFull\’));
_WidgetManager._RegisterWidget(\’_BlogView\’, new _WidgetInfo(\’Blog1\’, \’main\’, document.getElementById(\’Blog1\’), {\’cmtInteractionsEnabled\’: false, \’mobile\’: true}, \’displayModeFull\’));
_WidgetManager._RegisterWidget(\’_AttributionView\’, new _WidgetInfo(\’Attribution1\’, \’footer-3\’, document.getElementById(\’Attribution1\’), {}, \’displayModeFull\’));
_WidgetManager._RegisterWidget(\’_NavbarView\’, new _WidgetInfo(\’Navbar1\’, \’navbar\’, document.getElementById(\’Navbar1\’), {}, \’displayModeFull\’));
(function() {
var items = null;
var msgs = null;
var config = {};
// 0) {
cursor = parseInt(items[items.length – 1].timestamp) + 1;
}
var bodyFromEntry = function(entry) {
var text = (entry &&
((entry.content && entry.content.$t) ||
(entry.summary && entry.summary.$t))) ||
\’\’;
if (entry && entry.gd$extendedProperty) {
for (var k in entry.gd$extendedProperty) {
if (entry.gd$extendedProperty[k].name == \’blogger.contentRemoved\’) {
return \’\’ + text + \’\’;
}
}
}
return text;
}
var parse = function(data) {
cursor = null;
var comments = [];
if (data && data.feed && data.feed.entry) {
for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
var comment = {};
// comment ID, parsed out of the original id format
var id = /blog-(\\d+).post-(\\d+)/.exec(entry.id.$t);
comment.id = id ? id[2] : null;
comment.body = bodyFromEntry(entry);
comment.timestamp = Date.parse(entry.published.$t) + \’\’;
if (entry.author && entry.author.constructor === Array) {
var auth = entry.author[0];
if (auth) {
comment.author = {
name: (auth.name ? auth.name.$t : undefined),
profileUrl: (auth.uri ? auth.uri.$t : undefined),
avatarUrl: (auth.gd$image ? auth.gd$image.src : undefined)
};
}
}
if (entry.link) {
if (entry.link[2]) {
comment.link = comment.permalink = entry.link[2].href;
}
if (entry.link[3]) {
var pid = /.*comments\\/default\\/(\\d+)\\?.*/.exec(entry.link[3].href);
if (pid && pid[1]) {
comment.parentId = pid[1];
}
}
}
comment.deleteclass = \’item-control blog-admin\’;
if (entry.gd$extendedProperty) {
for (var k in entry.gd$extendedProperty) {
if (entry.gd$extendedProperty[k].name == \’blogger.itemClass\’) {
comment.deleteclass += \’ \’ + entry.gd$extendedProperty[k].value;
} else if (entry.gd$extendedProperty[k].name == \’blogger.displayTime\’) {
comment.displayTime = entry.gd$extendedProperty[k].value;
}
}
}
comments.push(comment);
}
}
return comments;
};
var paginator = function(callback) {
if (hasMore()) {
var url = config.feed + \’?alt=json&v=2&orderby=published&reverse=false&max-results=50\’;
if (cursor) {
url += \’&published-min=\’ + new Date(cursor).toISOString();
}
window.bloggercomments = function(data) {
var parsed = parse(data);
cursor = parsed.length
單純用大網站的OAuth當自己的會員系統還是有很大的問題
最明顯的是當使用者同時有Google 與 Facebook的帳號時
兩個帳號上面的Email可能不是一樣的
自己的網站很可能無法辨認這是同一個人的帳戶
所以一般還是會需要自己的會員系統做整合
回覆刪除
I really enjoy your blog it\’s a nice post
.Net Online Course
回覆刪除
OAuth主要功能是授權,不是認證,所以後來才延伸出OpenID Connect (OIDC)來提供認證用。
回覆刪除