所以我使用Okta登录小组件为我的内部WebApp验证用户。
但是,我正在努力如何从创建的会话中获取存储在我的域中的cookie中的sessionID,或者将其发布回响应然后保存,因此可以稍后用于对该用户执行操作会话(例如注销)。我的JavaScript能力很差,但我想在这里学习。请参阅下面的登录页面代码。如果有人可以帮助我,我可以作为登录的响应获得sessionID然后被使用,我们将不胜感激。
<!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;">
<div id="okta-login-container"></div>
<script type="text/javascript">
var orgUrl = '<?php echo $OktaInstanceConfig['OktaInstanceURL'];?>';
var redirectUrl = '<?php echo base_url().'index.php/Dashboard' ?>';
var oktaSignIn = new OktaSignIn({
baseUrl: orgUrl,
logo: '<?php echo base_url()."assets/images/".$CompanyConfig["CompanyName"]."/logo.svg"?>',
authParams: {
responseType: 'id_token',
responseMode: 'okta_post_message',
scope: [
'openid',
'email',
'profile',
'address',
'phone',
'groups'
]
}
});
oktaSignIn.renderEl(
{ el: '#okta-login-container' },
function (res) {
if (res.status === 'SUCCESS')
{
console.log('User %s successfully authenticated %o', res.user.profile.login, res.user);
res.session.setCookieAndRedirect(redirectUrl);
}
}
);
</script>
</body>
</html>
答案 0 :(得分:0)
Okta在调用方法setCookieAndRedirect(redirectUrl)
后设置用户会话。
redirectUrl
(index.php
)内部的逻辑可以通过retrieving the current session使用登录小工具获取sessionId
:
<!-- 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>