2016-12-25 112 views
0

因此,我正在使用Okta登錄Widget爲我的內部WebApp對用戶進行身份驗證。從Okta登錄Wudget獲取用戶SessionID

但是,我正在努力如何從存儲在我的域中的cookie中創建的會話中獲取sessionID,或者在回覆中發回並保存,以便稍後可以使用它來執行用戶會話(例如註銷)。我的JavaScript能力很糟糕,但我想在這裏學習。請參閱下面我的代碼登錄頁面。如果有人能夠幫助我,我可以如何從登錄中獲得會話ID,然後使用它,這將不勝感激。

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<?php echo $MetaData['charset']."\n";?> 
 
<?php echo $MetaData['viewport']."\n";?> 
 
<?php echo $MetaData['description']."\n";?> 
 
<?php echo $MetaData['author']."\n";?> 
 
<?php echo $MetaData['title']."\n";?> 
 

 
<link rel="shortcut icon" href=""> 
 
<script src="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/js/okta-sign-in.min.js" type="text/javascript"></script> 
 
<link href="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/css/okta-sign-in.min.css" type="text/css" rel="stylesheet"> 
 
<link href="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/css/okta-theme.css" type="text/css" rel="stylesheet"> 
 
<link href="<?php echo base_url().'assets/css/custom.css' ?>"type="text/css" rel="stylesheet"> 
 
</head> 
 
<body style="background-color:#f5f5f5;"> 
 
\t <div id="okta-login-container"></div> 
 
\t <script type="text/javascript"> 
 
\t \t var orgUrl = '<?php echo $OktaInstanceConfig['OktaInstanceURL'];?>'; 
 
    var redirectUrl = '<?php echo base_url().'index.php/Dashboard' ?>'; 
 
    var oktaSignIn = new OktaSignIn({ 
 
\t \t \t baseUrl: orgUrl, 
 
\t \t \t logo: '<?php echo base_url()."assets/images/".$CompanyConfig["CompanyName"]."/logo.svg"?>', 
 
\t \t \t authParams: { 
 
\t responseType: 'id_token', 
 
\t responseMode: 'okta_post_message', 
 
\t scope: [ 
 
\t \t 'openid', 
 
\t \t 'email', 
 
\t \t 'profile', 
 
\t \t 'address', 
 
\t \t 'phone', 
 
\t \t 'groups' 
 
\t \t \t \t \t ] 
 
    \t \t \t \t \t \t \t \t \t } 
 
\t \t }); 
 

 
\t \t oktaSignIn.renderEl(
 
\t \t { el: '#okta-login-container' }, 
 
\t \t function (res) { 
 
\t \t  if (res.status === 'SUCCESS') 
 
     { 
 
      console.log('User %s successfully authenticated %o', res.user.profile.login, res.user); 
 
      res.session.setCookieAndRedirect(redirectUrl); 
 
     } 
 
\t \t } 
 
\t \t); 
 
\t </script> 
 
</body> 
 
</html>

回答

0

1563所述方法setCookieAndRedirect(redirectUrl)被調用後設置用戶會話。

redirectUrlindex.php)可以通過sessionId使用retrieving the current session的登錄窗口小部件得到的內部邏輯:

<!-- index.php --> 
<!DOCTYPE html> 
<html> 
    <head> <!-- scripts and stylesheets --> </head> 

    <body> 
     <script type="text/javascript"> 

      var oktaSignIn = new OktaSignIn({ /* config */}); 

      oktaSignIn.session.exists(function (exists) { 
       if (exists) { 
        // Session exists 
        oktaSignIn.session.get(function (sessionInfo) { 
         // sessionInfo.id 
        }, function(err) { // error retrieving session }) 
         return; 
        } else { console.log("No session"); 
       } 
      }); 

     </script> 
    </body> 
</html> 
+0

感謝,並道歉採取回來的時候。 因此,我可以使用登錄小部件在不同的頁面上獲取會話ID,但我無法找到將其存儲爲cookie的方式,或將其傳遞到我的重定向URL(它是.php頁面)。 我基本上希望我的PHP應用程序能夠使用此會話ID。 –