Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

+ADD: Functionality to generate an AuthorizationURL for a selfdefined… #131

Merged
merged 6 commits into from
Jul 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,43 @@ public AuthorizationUrlResult AuthorizationUrl(string applicationId)
public AuthorizationUrlResult AuthorizationUrl(string applicationId, string redirectUri)
{
var state = Guid.NewGuid().ToString();
var authorizationUrl = GenerateAuthorizationUrlForState(applicationId, state, redirectUri);

return new AuthorizationUrlResult
{
AuthorizationUrl =
$"{_environment.AuthorizationUrl(applicationId)}?response_type=onboard&state={state}&redirect_uri={redirectUri}",
AuthorizationUrl = authorizationUrl,
State = state
};
}


/// <summary>
/// Generates the authorization URL for the application used within the onboarding process and adds the redirect URI
/// parameter.
/// </summary>
/// <param name="applicationId">The application ID for the authorization.</param>
/// <param name="state">A predefined identifier for the state (used by the external application).</param>
/// <param name="redirectUri">The redirect URI.</param>
/// <returns>-</returns>
public AuthorizationUrlResult AuthorizationUrlForState(string applicationId, Guid state, string redirectUri)
{
var stateAsString = state.ToString();
var authorizationUrl = GenerateAuthorizationUrlForState(applicationId, stateAsString, redirectUri);

return new AuthorizationUrlResult
{
AuthorizationUrl = authorizationUrl,
State = stateAsString
};
}

private string GenerateAuthorizationUrlForState(string applicationId, string state, string redirectUri)
{
return string.IsNullOrEmpty(redirectUri)
? $"{_environment.AuthorizationUrl(applicationId)}?response_type=onboard&state={state}"
: $"{_environment.AuthorizationUrl(applicationId)}?response_type=onboard&state={state}&redirect_uri={redirectUri}";
}

/// <summary>
/// Parsing the result which was attached as parameters to the URL.
/// </summary>
Expand All @@ -82,6 +111,7 @@ public AuthorizationResult Parse(string authorizationResult)
{
throw new ArgumentException($"The input '{authorizationResult}' does not meet the specification");
}

return new AuthorizationResult
{
State = parameters.Get("state"),
Expand All @@ -99,7 +129,7 @@ public AuthorizationResult Parse(string authorizationResult)
/// <exception cref="System.ArgumentException">Will be thrown if the input is not valid.</exception>
public AuthorizationResult Parse(Uri callbackUri)
{
return Parse(callbackUri.Query);
return Parse(callbackUri.Query);
}

/// <summary>
Expand All @@ -110,7 +140,7 @@ public AuthorizationResult Parse(Uri callbackUri)
public AuthorizationToken Parse(AuthorizationResult authorizationResult)
{
return
(AuthorizationToken) JsonConvert.DeserializeObject(
(AuthorizationToken)JsonConvert.DeserializeObject(
Encoding.UTF8.GetString(Convert.FromBase64String(authorizationResult.Token)),
typeof(AuthorizationToken));
}
Expand All @@ -128,7 +158,7 @@ public bool Verify(string state, string token, string signature)
{
var signer = SignerUtilities.GetSigner(Algorithm);
signer.Init(false,
(RsaKeyParameters) new PemReader(new StringReader(_environment.PublicKey())).ReadObject());
(RsaKeyParameters)new PemReader(new StringReader(_environment.PublicKey())).ReadObject());
signer.BlockUpdate(Encoding.UTF8.GetBytes(concatenatedValues), 0, concatenatedValues.Length);
return signer.VerifySignature(Base64.Decode(signature));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
using System;
using System.Collections.Generic;
using System.Threading;
using Agrirouter.Request.Payload.Endpoint;
using Agrirouter.Api.Service.Parameters;
using Agrirouter.Api.Service.Parameters.Inner;
using Agrirouter.Impl.Service.Common;
using Agrirouter.Impl.Service.Messaging;
using Agrirouter.Request.Payload.Endpoint;
using Agrirouter.Test.Helper;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
using Serilog;
using Xunit;
using Timer = Agrirouter.Test.Helper.Timer;

namespace Agrirouter.Test.Data.OnboardingResponses.Http
{
Expand Down Expand Up @@ -50,7 +47,7 @@ public void
}
catch (Exception e)
{
Log.Error("Exception while sending capabilities message for {}", onboardResponse.SensorAlternateId);
Log.Error(e,"Exception while sending capabilities message for {}", onboardResponse.SensorAlternateId);
}
});

Expand Down Expand Up @@ -84,7 +81,7 @@ public void
}
catch (Exception e)
{
Log.Error("Exception while sending capabilities message for {}", onboardResponse.SensorAlternateId);
Log.Error(e,"Exception while sending capabilities message for {}", onboardResponse.SensorAlternateId);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,21 @@ public void
authorizationUrlResult.AuthorizationUrl);
}


[Fact]
public void
GivenValidApplicationIdAndUuidAndRedirectUriWhenCreatingAuthorizationUrlThenTheUrlShouldBeFineDuringManualTesting()
{
var authorizationService = new AuthorizationService(new QualityAssuranceEnvironment());
var uuid = Guid.NewGuid();
var authorizationUrlResult =
authorizationService.AuthorizationUrlForState(ApplicationId, uuid,"https://www.dev4Agriculture.de");
Assert.Equal(
$"https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/16b1c3ab-55ef-412c-952b-f280424272e1/authorize?response_type=onboard&state={uuid}&redirect_uri=https://www.dev4Agriculture.de",
authorizationUrlResult.AuthorizationUrl);
}


[Fact]
public void GivenValidApplicationIdWhenCreatingAuthorizationUrlThenTheUrlShouldBeFineDuringManualTesting()
{
Expand Down
Loading