Reputation: 1
I am trying to create a small utility application wherein I need to login to JIRA (Atlassian.com).
Our JIRA server is hosted at Atlassian - example.atlassian.net and the application that I am trying to develop is hosted on my local server (192.168.1.XXX), on IIS. The application uses ASP.NET / C#.
I tried to run the sample JIRA example which presents a simple login page wherein the user is supposed to enter his/her JIRA credentials. Everything is fine up to this point.
If someone enters incorrect username/password, the application displays some error message (which I believe is broken):
The remote server returned an error: (401) Unauthorized.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[WebException: The remote server returned an error: (401) Unauthorized.]
System.Net.HttpWebRequest.GetResponse() +1743
JiraExample.JiraManager.RunQuery(JiraResource resource, String argument, String data, String method) +597
JiraExample.JiraManager.GetProjects() +100
JiraExample.Login.Button1_Click(Object sender, EventArgs e) +143
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11802193
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1735
But if correct username/password are entered, it says "This site cannot be reached" and points to firewall/proxy issues.
Is it because of lack of FQDN or because of the private IP address? If yes, is there a way to forward the JIRA response to my application?
Thanks
EDIT:
This example is using basic authentication:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = method;
string base64Credentials = GetEncodedCredentials();
request.Headers.Add("Authorization", "Basic " + base64Credentials);
private string GetEncodedCredentials()
{
string mergedCredentials = string.Format("{0}:{1}", m_Username, m_Password);
byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
return Convert.ToBase64String(byteCredentials);
}
(above code listing is partial)
Upvotes: 0
Views: 626
Reputation: 1720
It's because of the private IP address. The sample you're using is built around OAuth, which involves a roundtrip of tokens. See this Jira OAuth article. To keep it simple, use basic authentication by base64-encoding your username:password
and add it (with a prefix of "Basic") to the Authorization
header.
var encodedAuth = System.Convert.ToBase64String(
System.Text.Encoding.UTF8.GetBytes("username:password")
);
var Client = new HttpClient();
Client.DefaultRequestHeaders.Add("Authorization", "Basic " + encodedAuth);
Upvotes: 0