Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Chinese | ||||||
---|---|---|---|---|---|---|
|
Table of Contents |
---|
English |
---|
User logs in to external system / identity provider and implicitly gains access to Joget |
...
without being prompted to login again. |
Code Block | ||
---|---|---|
| ||
<script>
$(document).ready(function(){
$.ajax({
type: "POST",
url: 'http://localhost:8080/jw/web/json/directory/user/sso?callback=callbackFunction',
data: {
username: 'admin',
password: 'admin'
},
success: function(res) {
console.log("username (" + res.username + ") is " + ((res.isAdmin !== undefined && res.isAdmin === "true")?"admin":"not an admin"));
},
dataType: "json"
});
});
</script> |
Code Block | ||
---|---|---|
| ||
<script>
$(document).ready(function(){
$.ajax({
type: "POST",
url: 'http://localhost:8080/jw/web/json/directory/user/sso',
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic dXNlcjE6cGFzc3dvcmQx");
},
success: function(res) {
console.log("username (" + res.username + ") is " + ((res.isAdmin !== undefined && res.isAdmin === "true")?"admin":"not an admin"));
},
dataType: "json"
});
});
</script> |
Using the AssignmentManager.login method for SSO.
Code Block | ||
---|---|---|
| ||
<script type="text/javascript" src="http://localhost:8080/jw/js/jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://localhost:8080/jw/js/json/util.js" ></script>
<script type="text/javascript" >
$(document).ready(function(){
var loginCallback = {
success : function(response){
if(response.username != "roleAnonymous"){
alert("login successfully");
}else{
alert("login fail");
}
}
};
AssignmentManager.login('http://localhost:8080/jw', 'admin', 'admin', loginCallback);
});
</script> |
...
Chinese |
---|
用户登录到外部系统,隐式获得对Joget 的访问,而不会再提示重新登录。 |
Thai |
---|
ผู้ใช้ล็อกอินเข้าสู่ระบบภายนอกและเข้าถึง Joget โดยปริยายโดยไม่ต้องแจ้งให้ลงชื่อเข้าใช้อีกครั้ง |
Please see Joget Low Code Application Platform for G Suite
Please see Joget SSO with Keycloak using SAML.
Please see Joget SSO with Azure Active Directory using SAML.
Please see Joget SSO to Active Directory with Kerberos.
Please see OpenID Connect Directory Manager Plugin.
Please see Joget SharePoint SSO Integration.
Chinese |
---|
以编程方式登录用户 |
Thai |
---|
เข้าสู่ระบบผู้ใช้โดยทางโปรแกรม |
You can build your own Web Service Plugin to perform custom SSO implementation.
...
Chinese |
---|
您可以构建自己的 Web Service插件来执行自定义的SSO实现。 |
Thai |
---|
คุณสามารถสร้าง Web Service Plugin ของคุณเองเพื่อเรียกใช้การปรับใช้ SSO แบบกำหนดเอง |
Code Block |
---|
import org.joget.apps.workflow.security.WorkflowUserDetails; import org.joget.directory.model.service.DirectoryManager; import org.joget.workflow.model.service.WorkflowUserManager; import org.joget.apps.app.service.AppUtil; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.joget.directory.model.User; import org.joget.workflow.util.WorkflowUtil; import org.springframework.security.core.context.SecurityContextHolder; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import org.springframework.security.web.savedrequest.HttpSessionRequestCache; import org.springframework.security.web.savedrequest.SavedRequest; //Get service beans DirectoryManager dm = (DirectoryManager) AppUtil.getApplicationContext().getBean("directoryManager"); WorkflowUserManager workflowUserManager = (WorkflowUserManager) AppUtil.getApplicationContext().getBean("workflowUserManager"); //Login as "clark" String username = "clark"; User user = dm.getUserByUsername(username); if (user != null) { WorkflowUserDetails userDetail = new WorkflowUserDetails(user); //Generate an authentication token without a password UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(userDetail.getUsername(), "", userDetail.getAuthorities()); auth.setDetails(userDetail); //Login the user SecurityContextHolder.getContext().setAuthentication(auth); workflowUserManager.setCurrentThreadUser(user.getUsername()); // generate new session to avoid session fixation vulnerability HttpServletRequest httpRequest = WorkflowUtil.getHttpServletRequest(); HttpSession session = httpRequest.getSession(false); if (session != null) { SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST_KEY"); session.invalidate(); session = httpRequest.getSession(true); if (savedRequest != null) { session.setAttribute("SPRING_SECURITY_SAVED_REQUEST_KEY", savedRequest); } } } |
Please note that if you are adding these code in a filter, you will need to store the SecurityContext to session.
Chinese |
---|
请注意,如果要将这些代码添加到过滤器中,则需要将SecurityContext存储到会话中。 |
Thai |
---|
โปรดทราบว่าหากคุณเพิ่มรหัสเหล่านี้ในตัวกรองคุณจะต้องเก็บ SecurityContext ไปที่เซสชัน |
Code Block |
---|
//Store SecurityContext to session to avoid spring security to clean it. session.setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext()); |
...