{"id":13643,"date":"2023-05-09T11:34:00","date_gmt":"2023-05-09T06:04:00","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=13643"},"modified":"2023-05-09T11:34:00","modified_gmt":"2023-05-09T06:04:00","slug":"how-to-setup-sso-in-jenkins","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/05\/09\/how-to-setup-sso-in-jenkins\/","title":{"rendered":"How to Setup SSO in Jenkins?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"introduction\">Introduction<\/h2>\n\n\n\n<p>Providing OAuth 2.0 user authentication directly or using Google+ Sign-in helps us to achieve a modern authentication method. It also provides a trusted and secure login system that\u2019s familiar to users, consistent across devices, and removes the burden of users having to remember another username and password.\u00a0One of the hurdles in implementing a Gmail authentication is that\u00a0the Google developer console and your\u00a0 Jenkins server should be in the same network or in simple terms they can talk to each other.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-36.png?w=747\" alt=\"\" class=\"wp-image-13879\" width=\"662\" height=\"311\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What is SSO ?<\/h2>\n\n\n\n<p>SSO stands for Single Sign-On, which is a method of authentication that allows users to access multiple applications and services with a single set of login credentials.<\/p>\n\n\n\n<p>With SSO, users are only required to enter their login credentials once, and they can then access all the applications and services that are part of the SSO system. This simplifies the authentication process, improves user experience, and reduces the risk of security breaches.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>Working Without SSO<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-37.png?w=892\" alt=\"\" class=\"wp-image-13881\" width=\"721\" height=\"310\" \/><\/figure>\n\n\n\n<p>After facing these issues of  logging again and again in each and every application SSO comes to resolve this issue<\/p>\n\n\n\n<p><em>Now let&#8217;s check why sso is important <\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why we need SSO?<\/h2>\n\n\n\n<p>We can use SSO for multiple uses and it gives us various features :-<\/p>\n\n\n\n<p><strong>Improved User Experience:<\/strong> SSO simplifies the authentication process for users, as they only need to remember a single set of login credentials.<\/p>\n\n\n\n<p><strong>Enhanced Security: <\/strong>With SSO, users don&#8217;t have to remember multiple passwords, reducing the risk of weak passwords, password reuse, or forgotten passwords.<\/p>\n\n\n\n<p><strong>Increased Productivity: <\/strong>SSO can increase productivity by reducing the time it takes for users to log in to multiple applications.<\/p>\n\n\n\n<p><strong>Simplified Administration: <\/strong>SSO can simplify administration by allowing IT administrators to manage access to multiple applications and services from a single location.<\/p>\n\n\n\n<p>Overall, it is an important authentication method for organizations of all sizes and types, particularly those with a large number of applications and services that require secure access.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-38.png?w=870\" alt=\"\" class=\"wp-image-13883\" width=\"658\" height=\"303\" \/><\/figure>\n\n\n\n<p><strong>This is how SSO works <\/strong><\/p>\n\n\n\n<p><em>Now we are going to implement sso on our jenkins <\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resources-used\">Resources used<\/h2>\n\n\n\n<ul>\n<li>Privately Hosted Jenkins<\/li>\n\n\n\n<li>Aws Load Balancer(for DNS)<\/li>\n\n\n\n<li>Google Devloper Console<\/li>\n<\/ul>\n\n\n\n<p>In this blog, I\u2019m trying to explain how to integrate Gmail authentication(SSO) feature in your Jenkins server so that you are freed from filling out the form at the time of creating a new user.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setup-1-aws-load-balancer-for-dns\">Setup 1 : AWS Load Balancer (For DNS)<\/h2>\n\n\n\n<p>So basically, I am working on AWS cloud platform if you want to use any other cloud you can use it.<\/p>\n\n\n\n<p>So here comes a question in your mind why load balancer is needed in SSO setup? Because Google OAuth needs a Domain in its configuration while setting up sso on Google Developers Console. So we all know the domain is not free of cost that\u2019s why we are using a load balancer for setting up SSO. A load balancer provides a DNS that we can use for setting up OAuth credentials configurations for SSO.<\/p>\n\n\n\n<p><em>So after this information now it\u2019s time to move for implementation!<\/em><\/p>\n\n\n\n<p><strong>Step 1 :-<\/strong><\/p>\n\n\n\n<ul>\n<li>Go to your AWS account and Create a Load Balancer<\/li>\n<\/ul>\n\n\n\n<ul>\n<li>click on create load balancer<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-39.png?w=1024\" alt=\"\" class=\"wp-image-13886\" width=\"800\" height=\"111\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>We will use Application Load Balancer.<\/strong><\/p>\n\n\n\n<p><strong>Step 2:-<\/strong><\/p>\n\n\n\n<ul>\n<li>Provide configurations to your load balancer<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-2.png?w=1024\" alt=\"\" class=\"wp-image-13685\" width=\"800\" height=\"392\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-3.png?w=1024\" alt=\"\" class=\"wp-image-13688\" width=\"719\" height=\"592\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Now Create a Target Group for Load balancer<\/li>\n<\/ul>\n\n\n\n<ul>\n<li>Click on create target group<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-5.png?w=926\" alt=\"\" class=\"wp-image-13691\" width=\"739\" height=\"346\" \/><\/figure>\n\n\n\n<ul>\n<li>Choose Instances as a target type<\/li>\n\n\n\n<li>Give a particular name to your target group for identifying <\/li>\n\n\n\n<li>Choose listener protocol <strong>HTTP <\/strong>and port <strong>8080 <\/strong>(Because jenkins runs on 8080 port)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-6.png?w=1024\" alt=\"\" class=\"wp-image-13693\" width=\"777\" height=\"555\" \/><\/figure>\n\n\n\n<ul>\n<li>Now you have to register target in your target group<\/li>\n<\/ul>\n\n\n\n<ul>\n<li>Choose your jenkins server and after choosing click on <strong>Include as pending below<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-7.png?w=1024\" alt=\"\" class=\"wp-image-13695\" width=\"800\" height=\"309\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Now just click on create target group &amp; associate that target group with your load balancer<\/li>\n\n\n\n<li>Now you get a DNS<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-34.png?w=979\" alt=\"\" class=\"wp-image-13746\" width=\"800\" height=\"228\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setup-2-google-devlopers-console\">Setup 2 : Google Devlopers Console<\/h2>\n\n\n\n<p><strong>Step 1 :-<\/strong> Go to your browser and search for Google Devlopers Console<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"497\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-10.png?w=795\" alt=\"\" class=\"wp-image-13700\" \/><\/figure>\n\n\n\n<ul>\n<li>After sign in into google developer console, we will redirect to Google developer console UI screen.<\/li>\n\n\n\n<li>Go to APIs &amp; Services<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-11.png?w=1024\" alt=\"\" class=\"wp-image-13705\" width=\"800\" height=\"465\" \/><\/figure>\n\n\n\n<p>Go to Select a project&nbsp; \u2192 New Project<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"511\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-12.png?w=660\" alt=\"\" class=\"wp-image-13707\" \/><\/figure>\n\n\n\n<ul>\n<li>Give Project Name, here I will use \u201cJenkins-demo\u201d and create a project. Creating a project takes 1 or 2 minutes.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"658\" height=\"675\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-13.png?w=658\" alt=\"\" class=\"wp-image-13708\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>After Project created, we will be redirected to the UI page as shown below. Now click on on the \u201cCredentials\u201d Tab on the left slide bar &amp; now click on \u201cConfigure Consent Screen\u201d.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-14.png?w=1024\" alt=\"\" class=\"wp-image-13710\" width=\"800\" height=\"368\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>After Go to the OAuth consent screen tab and give the below entries. Here I will give Application name to \u201cJenkins\u201d.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-15.png?w=829\" alt=\"\" class=\"wp-image-13711\" width=\"727\" height=\"669\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>The important part of the Google developer console isDNS we created using Load Balancer. Copy DNS in Authorized domains .<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-16.png?w=557\" alt=\"\" class=\"wp-image-13713\" width=\"711\" height=\"338\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>After Setting OAuth consent screen, Go to&nbsp; &nbsp;\u201cCredentials Tab\u201d\u2192 Create Credentials\u2192OAuthClientID<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"623\" height=\"373\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-17.png?w=623\" alt=\"\" class=\"wp-image-13714\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Select Application type as Web Application, give the name \u201cJenkinsSSO\u201d.<\/li>\n\n\n\n<li>Major Part of Create Credential has Authorized JavaScript origins and Authorized redirect URIs.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-18.png?w=637\" alt=\"\" class=\"wp-image-13716\" width=\"721\" height=\"850\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>In Authroized Javascript origins Paste the DNS which you created in aws<\/li>\n\n\n\n<li>In Authorized redirect Urls Paste the same DNS just add \u201csecurityRealm\/finishLogin\u201c<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-19.png?w=1024\" alt=\"\" class=\"wp-image-13718\" width=\"800\" height=\"229\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Copy Client ID and Client Secret because we are going to use these in Jenkins.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"513\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-20.png?w=478\" alt=\"\" class=\"wp-image-13719\" \/><\/figure>\n\n\n\n<p>You can also download your Id and password in JSON format<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-3-setup-jenkins\">Step 3: Configure Jenkins<\/h2>\n\n\n\n<p>I am assuming that Jenkins is already installed in your system.<\/p>\n\n\n\n<ul>\n<li>Go to Manage Jenkins \u2192 Manage Plugins\u2192 Available<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-21.png?w=1024\" alt=\"\" class=\"wp-image-13721\" width=\"800\" height=\"360\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Search for \u201cGoogle Login Plugin\u201d and add it.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-33.png?w=1024\" alt=\"\" class=\"wp-image-13743\" width=\"800\" height=\"88\" \/><\/figure>\n\n\n\n<ul>\n<li>Go to Manage Jenkins \u2192 Configure Global Security<\/li>\n<\/ul>\n\n\n\n<p>The major part of Jenkins Setup is to Configure Global Security.<\/p>\n\n\n\n<ul>\n<li>Check the Enable security \u2192 Login with Google and Paste the Client ID and Client secret generated in Create Credential Step on Developers Console and Save.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-35.png?w=930\" alt=\"\" class=\"wp-image-13749\" width=\"681\" height=\"529\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>So now the last task is Go to manage jenkins \u2192 Configure System \u2192Jenkins locations, and paste the DNS in that column<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"242\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-32.png?w=525\" alt=\"\" class=\"wp-image-13742\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Up to here, we are done with the Setup part. Now Click on login button on Jenkins UI, you will redirect to Gmail for login.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-25.png?w=1024\" alt=\"\" class=\"wp-image-13727\" width=\"800\" height=\"119\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>Select the account from which you want to log in.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"562\" height=\"662\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-26.png?w=562\" alt=\"\" class=\"wp-image-13729\" \/><\/figure>\n\n\n\n<ul>\n<li>After selecting Account you will redirect to Jenkins and you are logged in as the selected user.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-27.png?w=1024\" alt=\"\" class=\"wp-image-13730\" width=\"800\" height=\"532\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>You may be facing a problem when you log in again. Log out from the current user and log in again.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-28.png?w=701\" alt=\"\" class=\"wp-image-13732\" width=\"800\" height=\"440\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>After redirected to Gmail select another user. After selecting user you will be redirected to Error Page showing: HTTP ERROR 404.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-29.png?w=1024\" alt=\"\" class=\"wp-image-13733\" width=\"800\" height=\"333\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Don\u2019t worry, you have to just remove \u201csecurityRealm\/\u201d or enter again \u201cDNS\u201d.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-30.png?w=978\" alt=\"\" class=\"wp-image-13735\" width=\"983\" height=\"69\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>You are logged in with the selected user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/image-31.png?w=1024\" alt=\"\" class=\"wp-image-13737\" width=\"800\" height=\"408\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>So now you know how to do Gmail Authentication between Google developer console and Jenkins when they are not directly reachable to each other.<\/p>\n\n\n\n<p><em>Here the main bridge between both is AWS Load Balancer for providing DNS which host our Jenkins to outer internet.<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>So in this article, we get to learn about how to set up SSO on Jenkins which helps us to enhance our security on the Jenkins server and gives us easy-to-use features, that save time and also provide a more secure way of logging in. This means now you don&#8217;t have to share your password with multiple sites.<\/p>\n\n\n\n<p>Overall, SSO is a powerful tool that can simplify the login process for users and help organizations to better manage their IT infrastructure.<\/p>\n\n\n\n<p>Next time we will meet with some new tool concepts.<\/p>\n\n\n\n<p><strong>Blog Pundits: <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\" target=\"_blank\" rel=\"noreferrer noopener\">Deepak Gupta<\/a><\/strong> and <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>Opstree<\/strong>\u00a0is an End to End <a href=\"https:\/\/opstree.com\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=How+to+Setup+SSO+in+Jenkins%3F\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps solution provider<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=How+to+Setup+SSO+in+Jenkins%3F\" target=\"_blank\" rel=\"noreferrer noopener\">CONTACT US<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Providing OAuth 2.0 user authentication directly or using Google+ Sign-in helps us to achieve a modern authentication method. It also provides a trusted and secure login system that\u2019s familiar to users, consistent across devices, and removes the burden of users having to remember another username and password.\u00a0One of the hurdles in implementing a Gmail &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/05\/09\/how-to-setup-sso-in-jenkins\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to Setup SSO in Jenkins?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":233876162,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[44070,768739308,676319247,81,686695795,325304,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3y3","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13643"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/233876162"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=13643"}],"version-history":[{"count":24,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13643\/revisions"}],"predecessor-version":[{"id":14032,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13643\/revisions\/14032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=13643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=13643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=13643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}