Disqus 싱글 서명 열기 정보(SSO)
Getting Started with Single Sign-On
공성단이 대응할 때 일본어 메시지를 발견하지 못했기 때문에 먼저 적었다.
실제 이미지
로그인하면 이렇게 됩니다.공성단 등록 아이콘과 이름을 표시할 수 있습니다.
Disqus 단일 서명 켜기 설정 단계
이렇게 하면 비교적 간단하다.
먼저 이메일로 보내주세요.
표준 상태에서 무효이기 때문에 메일 변경 설정을 보내주세요.
나는 영어에 자신이 없지만 이런 메일은 괜찮다.
I already use DISQUS my blog ( http://kojodan.jp/blog/ ).
Please enable SSO.
나는 이튿날 OK의 답장을 받았다.
표시할 페이지에 설정 삽입
Disqus 의견 표시줄 설정 페이지에 설정 정보(공용 키 및 해싱 ID 정보)를 추가합니다.
var disqus_config = function() {
// The generated payload which authenticates users with Disqus
this.page.remote_auth_s3 = "ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123ABCabc123 0000000000";
this.page.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
}
물론 여기는 사용자에 따라 달라지기 때문에 동적 출력을 할 수 있습니다.디버깅용 도구도 준비했습니다.
https://disqus.com/api/sso/
로그인용 아이콘 준비
로그인 단추를 표시할 수 있습니다.
사이즈는 143입니다.×32px.
가장 적합한 포인트
사실 잘 안 돼서 그 부분만 적어놨어요.
mod_pagespeed 귀신의 문.
속도를 높이기 위해mod페이지speed를 사용했지만 모든 사용자의 로그인 정보를 캐시할 수 없기 때문에 이 문제를 피하기 위해서입니다.CGI 호출 설정을 통해 SSO 인증용 해시가 사라졌습니다.
(mod pagespeed를 사용하지 않은 웹 사이트가 외부 JS로 호출됨)
SSI로 불러내면 잘 되니까 지금은 SSI인 것 같지만 채택했다.어쨌든 행동은 매우 중요하다.
이런 느낌으로 부르고 있다.
<div class="well well-small" id="comments"><i class="fa fa-comments-o fa-2x"></i> <b style="font-size: 1.5em;">コメントをぜひ!</b></div>
<div id="disqus_announce" class="alert"><i class="fa fa-info-circle"></i> 攻城団のアカウントでログインすることができます <a href="#loginForm" role="button" data-toggle="modal" class="btn"><i class="fa fa-user"></i> ログイン</a></div>
<div id="disqus_thread"></div>
<!--#exec cgi="../SSI_Disqus_SSO.cgi" —>
죄송하지만 참고할 사람이 있을 수 있으니 코드도 붙여주세요.SSI_Disqus_SSO.cgi
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw/:standard/;
use CGI::Session;
use JSON;
use MIME::Base64;
use Digest::SHA qw(hmac_sha1_hex);
require "function.pl"; # セッション復元の関数とかが定義されてます
# DISQUS シークレットキー
my $DISQUS_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
my $DISQUS_PUBLIC_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
# ログインチェック(セッション情報の復元)
my $is_login = 1;
my $session = getSession();
my ($user_id, $email, $handle, $icon, $mypage);
if ($session) {
$user_id = $session->param('user_id');
$email = $session->param('email');
$handle = $session->param('handle');
$icon = "http://kojodan.jp/profile_images/".$session->param('icon');
$mypage = "http://kojodan.jp/profile/".$user_id;
}
$is_login = 0 unless($user_id);
# 可否フラグと差し替え用HTML
my $remote_auth_s3 = "___________Please_login_kojodan___________";
my $replace = "";
if ($is_login) {
my %data = (
"id" => $user_id,
"username" => $handle,
"email" => $email,
"avatar" => $icon,
"url" => $mypage
);
my $json = JSON->new->encode(\%data);
my $message = encode_base64($json);
my $timestamp = time();
$message =~ s/[\r|\n]//g;
my $hmac = hmac_sha1_hex("$message $timestamp", $DISQUS_SECRET_KEY);
$remote_auth_s3 = "$message $hmac $timestamp";
$remote_auth_s3 =~ s/[\r|\n]//g;
$replace = '$("#disqus_announce").remove();';
}
# 出力するJavaScript
my $output = <<__JS__;
<script type="text/javascript">
$replace
var disqus_config = function() {
// The generated payload which authenticates users with Disqus
this.page.remote_auth_s3 = '$remote_auth_s3';
this.page.api_key = '$DISQUS_PUBLIC_KEY';
// This adds the custom login/logout functionality
this.sso = {
name: "攻城団",
button: "http://static.kojodan.jp/images/DISQUS_login.png",
icon: "http://kojodan.jp/favicon.ico",
url: "http://kojodan.jp/login_DISQUS.html",
logout: "http://kojodan.jp/logout",
width: "500",
height: "300"
};
}
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'kojodanjp'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
__JS__
# 出力開始
print "Content-Type: text/html\n\n";
print $output;
exit;
Reference
이 문제에 관하여(Disqus 싱글 서명 열기 정보(SSO)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/smashmedia/items/7c617c14ec29c17787e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)