It's all about the answers!

Ask a question

How do you authenticate to an RTC server using LWP?


Shawn Carroll (284) | asked Nov 05 '18, 1:08 p.m.

We just recently upgraded our servers to RHEL 7 and our perl scripts are no longer working. When I run the code below, I'm able to retrieve the root services document for our ccm server, but when I attempt to retrieve the catalog, I get a response telling me that authentication is required again. I run the same code on a different server that is still running RHEL 6 and the script runs perfectly. Why does this script no longer work?

!/usr/bin/perl


use Data::Dumper;
use LWP::UserAgent;
use HTTP::Request::Common;
use HTTP::Cookies;
use XML::Simple;
use MIME::Base64;
use URI::Escape;

*******


User Login Information


*******


my $username = 'username';
my $password = 'password';

*******


Define RTC URL


*******


my $rtc_url = "https://serverlocation:9443/ccm";
my $jts_url = "https://serverlocation:9443/jts";
my $catalog_header = 'oslc_cm:cmServiceProviders';

*******


Set Up User Agent


*******


my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0}, );

my $req = GET "$rtc_url/ccm/authenticated/j_security_check?j_username=$username&j_password=$password";
my $res = $ua->request($req);

*******


Get Root Services


*******


my $req = GET "$rtc_url/rootservices";
my $res = $ua->request($req);

my $content = $res->content;

my $xml = new XML::Simple;
my $root_services_data = $xml->XMLin($content);

*******


Get Project URLs


*******


my $catalog = $root_services_data->{$catalog_header}->{'rdf:resource'};   

my $req = HTTP::Request->new("GET" => "$catalog");
$req->header('Accept', "application/rdf+xml");
$req->header('OSLC-Core-Version', "2.0");

my $res = $ua->request($req);

my $xml = new XML::Simple;
my $catalog_data = $xml->XMLin($res->content,ForceArray => ['oslc:serviceProvider']);
my $projects_hash;
foreach my $project (@{$catalog_data->{'oslc:ServiceProviderCatalog'}->{'oslc:serviceProvider'}})
{
    my $str_project_name        = $project->{'oslc:ServiceProvider'}->{'dcterms:title'}->{'content'};
    my $str_project_details_url = $project->{'oslc:ServiceProvider'}->{'oslc:details'}->{'rdf:resource'};
    $projects_hash{$str_project_name} = $str_project_details_url;
}


Comments
Shawn Carroll commented Nov 05 '18, 1:27 p.m.

Note: The server this script worked on was a RHEL 5 server, not RHEL 6. It won't let me edit it.


Kevin Ramer commented Nov 05 '18, 1:48 p.m.

What exactly is going wrong ?   I have LWP authenticating to jazz on RHEL 7.  


One thing I don't see in your "setup" :


    push @{ $Browser->requests_redirectable }, 'POST';



"It won't let me edit" ?  Do you mean you cannot save changes ?


Shawn Carroll commented Nov 05 '18, 1:56 p.m.

It flags my change to the original post as spam and the captcha server is down.

The response I get for the last request call is:

<html >
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=10">
<title></title>

<link type="text/css" rel="stylesheet" href="/ccm/web/_style/?include=D~&etag=ECU0fM4MFTZ_en_US&_proxyURL=%2Fccm&ss=NyjAL">
<link rel="shortcut icon" href="/ccm/web/net.jazz.ajax/jazz.ico">

<style type="text/css">

net-jazz-ajax-NoScriptMessage {


    width: 100%;
    color: #D0D0D0;
    font-size: 2em;
    text-align: center;
    position: absolute;
    top: 1%;
    z-index: 999;
}
</style>

</head>


Shawn Carroll commented Nov 05 '18, 1:57 p.m.

<body class="claro">
    <noscript><div id="net-jazz-ajax-NoScriptMessage">Javascript is either disabled or not available in your Browser</div></noscript>
    <div id="net-jazz-ajax-InitialLoadMessage">Loading...</div>
    <div id="net-jazz-ajax-WorkbenchRoot"></div>
    
    <script type="text/javascript">
        djConfig = {
            isDebug: false,
            layout: "",
            usePlainJson: true,
            baseUrl: "/ccm/web/dojo/",
            locale: "en-us",
            localizationComplete: true
        };


Shawn Carroll commented Nov 05 '18, 1:57 p.m.

        /null/
        net = {jazz: {ajax: {}}};
        net.jazz.ajax._contextRoot = "/ccm";
        net.jazz.ajax._appPath = "/ccm/auth/authrequired";
        net.jazz.ajax._webuiPrefix = "/web/";
    </script>
    
    <script type="text/javascript" src="/ccm/web/_js/?include=D~&etag=ECU0fM4MFTZ_en_US&_pr
oxyURL=%2Fccm&ss=NyjAL&locale=en-us"></script>

<script type="text/javascript">
require("dojo/main").getObject('jazz.core.loader', true)._serverStartup="NyjAL";
require("dojo/main").getObject('jazz.core.loader',true)._loaded=["D"];
</script>


Shawn Carroll commented Nov 05 '18, 1:57 p.m.

    <script type="text/javascript">
    / <![CDATA[ /
        dojo.addOnLoad( function() {
            net.jazz.ajax.ui.PlatformUI.createAndRunWorkbench("net.jazz.web.app.authrequired");
        });
    / ]]> /
    </script>
</body>
</html>

showing 5 of 6 show 1 more comments

Be the first one to answer this question!


Register or to post your answer.