SAML SSO를 구현했으며,이를 위해 여권 -SAML을 사용했습니다. 로그인은 "http-post"를 authnRequestBinding으로 사용하여 완벽하게 작동합니다. 그러나 그런 로그 아웃 방법을 찾을 수 없습니다. 로그 아웃 기본값은 http 리다이렉션으로 표시되며 올바르게 작동하지 않습니다. 모든Http-post 메서드를 사용하여 passport-saml에서 로그 아웃 기능을 구현합니다.
답변
첫째, 당신은 여권 SAML에 대한 설정에 logoutUrl 및 logoutCallback를 정의 할 필요가있다. logoutUrl은 서버가 logoutRequest를 보낼 URL입니다. 그래서 당신이 사용하고있는 아이디 공급자로부터받은 URL입니다. logoutCallback은 이름에서 알 수 있듯이 로그 아웃이 완료된 후 브라우저에서 (리디렉션을 통해) 호출 할 callbackUrl입니다. 여기에 당신이 그 구성을 추가하는 방법은 다음과 같습니다
module.exports = {
development: {
app: {
name: 'Passport SAML strategy example',
port: process.env.PORT || 8443
},
passport: {
strategy: 'saml',
saml: {
logoutUrl: 'idp-logout-url-here',
logoutCallback: 'your-logout-callback-url-here'
}
}
}
};
그런 다음 당신은 당신이 위에서 정의 된 설정을 사용합니다 코드, 어딘가에 SamlStrategy이 필요합니다. 물론 config에는 다른 변수도 있습니다. 이제 로그 아웃 관련 변수를 여기에 입력합니다. 이 로그 아웃을 호출합니다, 당신은 위에서 볼 수 있듯이
app.get('/logout', function(req, res) {
if (req.user == null) {
return res.redirect('/');
}
return SamlStrategy.logout(req, function(err, uri) {
return res.redirect(uri);
});
});
:
은 마지막으로 전화했을 때 로그 아웃 프로세스를 시작합니다 노드 응용 프로그램에 정의 된 자신의 로그 아웃 경로을 가질 필요가 함수를 정의합니다. 그래서 패스포트 - 샘 전략에 정의 된 로그 아웃 기능이있다. 위와 마찬가지로 콜백 함수를 제공해야합니다. 콜백 함수는 URI에 대한 응답을 리디렉션합니다. 그 uri은 이전에 정의한 logoutCallback URL입니다.
SamlStrategy가 궁금하다면 실제로 여권 -Saml의 전략입니다. 어떻게 작동시키는 지 보여줄 수 있습니다. 별도의 파일에서, 예를 들어 'SAML-strategy.js'라는이를 넣어 :
const SamlStrategy = require('passport-saml').Strategy;
var config = require('./config.js')['development'];
module.exports = new SamlStrategy(
{
otherImportantvariable1: config.passport.saml.OtherImportantvariable1,
logoutUrl: config.passport.saml.logoutUrl,
logoutCallback: config.passport.saml.logoutCallback
}
function (profile, done) {
user = Object.assign({}, profile);
return done(null, user);
}
);
삽입 모든 중요한 설정 변수 같은 방법으로 로그 아웃 관련 변수는 상기 정의 된 바와 같다. 첫 번째 단계에서 생성 된 구성을 포함시킵니다.
그런 다음 당신은 당신이 당신의 경로가 동일한 파일에 SamlStrategy을 필요로 할 수 있습니다
const SamlStrategy = require('../config/saml-strategy');
문의하십시오 아무것도 불분명 한 경우! 다음 ADFS위한
아웃 픽스
1) 세션 인덱스 속성 여권 SAML 로그 아웃 요청의 일부로서 추가되어야한다. 당신은 여권 프로파일 객체로부터 그것을 얻을 수 있습니다.
function (profile, done) {
console.log('Profile: %j', profile);
return done(null,
{
id: profile.nameID,
sessionIndex: profile.sessionIndex
});
ADFS에서 반환 된 sessionIndex가없는 경우. 그런 다음 신뢰할 수있는 부분 트러스트의 NameID 규칙은 다음과 같아야합니다.
"Claim rule name"으로 NameID를 추가하고 Attribute store로 "Active Directory"를 선택하고 LDAP 특성으로 "SAM-Account-Name"을 선택하고 "Name ID "을"보내는 클레임 유형 "으로 지정하고 마법사를 끝내고 클레임 규칙 창을 확인합니다.(참조 : spring saml ADFS)
가2) 디버그는 ADFS 로그 (이벤트 뷰어)를 사용하여 오류가 아래와 같은 있는지 여부를 확인
는 SAML 단일 로그 아웃 요청이 로그인 된 일치하지 않습니다 세션 참가자는 입니다. 요청자 : app.yyy.com
요청 이름 식별자 : 형식 : 항아리 : 오아시스 : 이름 : TC : SAML : 1.1 : nameid 포맷 : 지정, NameQualifier : SPNameQualifier : SPProvidedId : 세션 참가자 로그인 한 : 카운트 : 1, [Issuer : app.yyy.com, NameID : (형식 : NameQualifier : SPNameQualifier : SPProvidedId :)]이 요청은 실패했습니다.
그렇다면 세션을 로그 아웃하기 위해 nameIDFormat을 비워 두어야 함을 의미합니다. 이전에는 인증 요청에 지정된 nameIDFormat을 사용하고 있었지만 작동하지 않았습니다.
HTTP-POST 바인딩은이 구성 없이는 아무런 차이가 없습니다.
희망이 도움이됩니다.
- 1. Generic을 사용하여 IsNotNullAndGreaterThanZero 확장 메서드를 구현합니다.
- 2. 자바가 추가 메서드를 사용하여 인터페이스를 구현합니다.
- 3. Android - ExpandableListView는 필터링 기능을 구현합니다
- 4. WordPress 플러그인에 로그 아웃 기능을 추가하려면 어떻게해야합니까?
- 5. GWT를 사용하여 로그인/로그 아웃 기능을 만드는 데 도움이 필요합니다.
- 6. 로그 아웃
- 7. 로그 아웃
- 8. 단일 연결 목록 메서드를 구현합니다.
- 9. 여러 HttpPost 메서드를 사용하는 방법
- 10. AJAX로 로그인/로그 아웃
- 11. 로그 아웃 asp.net을 사용하여 LinkedIN에서
- 12. MGTwitterEngine을 사용하여 로그 아웃 하시겠습니까?
- 13. Jasig CAS 싱글 로그 아웃 - 로그 아웃
- 14. 하나의 로그 아웃 링크에서 여러 사이트 로그 아웃 기능을 만들려면 어떻게해야합니까?
- 15. aikau - 내보내기 검색 기능을 구현합니다.
- 16. 세션 로그 아웃 버튼을
- 17. 로그 아웃
- 18. Woocommerce 로그 아웃/맞춤 로그 아웃 만드는 법
- 19. Django에서 세션을 사용하여 자동으로 로그 아웃 (외부보기)
- 20. Facebook 로그 아웃 iOS
- 21. sfDoctrineGuardPlugin - 타임 아웃 로그 아웃
- 22. iOS 로그 아웃 디자인
- 23. 사이트에서 사용자 로그 아웃
- 24. 로그인/로그 아웃 ejabberd
- 25. 스케줄 로그 아웃
- 26. android에서 로그 아웃 기능
- 27. 플라스크 로그인을 사용하여 특정 사용자 로그 아웃
- 28. Yii auth의 소셜 네트워크에서 로그 아웃 기능을 구현하는 방법
- 29. 로그인 로그 아웃 제어
- 30. phpbb에서 로그 아웃 할 때 drupal 로그 아웃