public Template CreateAuthorizationServerTemplate(CreatorConfig creatorConfig) { // create empty template Template authorizationTemplate = CreateEmptyTemplate(); // add parameters authorizationTemplate.parameters = new Dictionary <string, TemplateParameterProperties> { { ParameterNames.ApimServiceName, new TemplateParameterProperties() { type = "string" } } }; List <TemplateResource> resources = new List <TemplateResource>(); foreach (AuthorizationServerTemplateProperties authorizationServerTemplateProperties in creatorConfig.authorizationServers) { // create authorization server resource with properties AuthorizationServerTemplateResource authorizationServerTemplateResource = new AuthorizationServerTemplateResource() { name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{authorizationServerTemplateProperties.displayName}')]", type = ResourceTypeConstants.AuthorizationServer, apiVersion = GlobalConstants.APIVersion, properties = authorizationServerTemplateProperties, dependsOn = new string[] { } }; resources.Add(authorizationServerTemplateResource); } authorizationTemplate.resources = resources.ToArray(); return(authorizationTemplate); }
public void ShouldCreateAuthorizationServerTemplateFromCreatorConfig() { // arrange AuthorizationServerTemplateCreator authorizationServerTemplateCreator = new AuthorizationServerTemplateCreator(new TemplateBuilder()); CreatorConfig creatorConfig = new CreatorConfig() { authorizationServers = new List <AuthorizationServerProperties>() }; AuthorizationServerProperties authorizationServer = new AuthorizationServerProperties() { Description = "description", DisplayName = "displayName", AuthorizationEndpoint = "endpoint.com", AuthorizationMethods = new string[] { "GET" }, TokenBodyParameters = new AuthorizationServerTokenBodyParameter[] { new AuthorizationServerTokenBodyParameter() { Name = "name", Value = "value" } }, ClientAuthenticationMethod = new string[] { "GET" }, TokenEndpoint = "endpoint.com", SupportState = true, DefaultScope = "defaultScope", BearerTokenSendingMethods = new string[] { "GET" }, ClientId = "id", ClientSecret = "secret", ClientRegistrationEndpoint = "endpoint.com", ResourceOwnerPassword = "******", ResourceOwnerUsername = "******", GrantTypes = new string[] { } }; creatorConfig.authorizationServers.Add(authorizationServer); // act Template authorizationServerTemplate = authorizationServerTemplateCreator.CreateAuthorizationServerTemplate(creatorConfig); AuthorizationServerTemplateResource authorizationServerTemplateResource = (AuthorizationServerTemplateResource)authorizationServerTemplate.Resources[0]; // assert Assert.Equal($"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{authorizationServer.DisplayName}')]", authorizationServerTemplateResource.Name); Assert.Equal(authorizationServer.Description, authorizationServerTemplateResource.Properties.Description); Assert.Equal(authorizationServer.DisplayName, authorizationServerTemplateResource.Properties.DisplayName); Assert.Equal(authorizationServer.AuthorizationEndpoint, authorizationServerTemplateResource.Properties.AuthorizationEndpoint); Assert.Equal(authorizationServer.AuthorizationMethods, authorizationServerTemplateResource.Properties.AuthorizationMethods); Assert.Equal(authorizationServer.ClientAuthenticationMethod, authorizationServerTemplateResource.Properties.ClientAuthenticationMethod); Assert.Equal(authorizationServer.ClientId, authorizationServerTemplateResource.Properties.ClientId); Assert.Equal(authorizationServer.ClientRegistrationEndpoint, authorizationServerTemplateResource.Properties.ClientRegistrationEndpoint); Assert.Equal(authorizationServer.ClientSecret, authorizationServerTemplateResource.Properties.ClientSecret); Assert.Equal(authorizationServer.BearerTokenSendingMethods, authorizationServerTemplateResource.Properties.BearerTokenSendingMethods); Assert.Equal(authorizationServer.GrantTypes, authorizationServerTemplateResource.Properties.GrantTypes); Assert.Equal(authorizationServer.ResourceOwnerPassword, authorizationServerTemplateResource.Properties.ResourceOwnerPassword); Assert.Equal(authorizationServer.ResourceOwnerUsername, authorizationServerTemplateResource.Properties.ResourceOwnerUsername); Assert.Equal(authorizationServer.DefaultScope, authorizationServerTemplateResource.Properties.DefaultScope); Assert.Equal(authorizationServer.SupportState, authorizationServerTemplateResource.Properties.SupportState); Assert.Equal(authorizationServer.TokenBodyParameters[0].Name, authorizationServerTemplateResource.Properties.TokenBodyParameters[0].Name); Assert.Equal(authorizationServer.TokenBodyParameters[0].Value, authorizationServerTemplateResource.Properties.TokenBodyParameters[0].Value); }
public void ShouldCreateAuthorizationServerTemplateFromCreatorConfig() { // arrange AuthorizationServerTemplateCreator authorizationServerTemplateCreator = new AuthorizationServerTemplateCreator(); CreatorConfig creatorConfig = new CreatorConfig() { authorizationServers = new List <AuthorizationServerTemplateProperties>() }; AuthorizationServerTemplateProperties authorizationServer = new AuthorizationServerTemplateProperties() { description = "description", displayName = "displayName", authorizationEndpoint = "endpoint.com", authorizationMethods = new string[] { "GET" }, tokenBodyParameters = new AuthorizationServerTokenBodyParameter[] { new AuthorizationServerTokenBodyParameter() { name = "name", value = "value" } }, clientAuthenticationMethod = new string[] { "GET" }, tokenEndpoint = "endpoint.com", supportState = true, defaultScope = "defaultScope", bearerTokenSendingMethods = new string[] { "GET" }, clientId = "id", clientSecret = "secret", clientRegistrationEndpoint = "endpoint.com", resourceOwnerPassword = "******", resourceOwnerUsername = "******", grantTypes = new string[] { } }; creatorConfig.authorizationServers.Add(authorizationServer); // act Template authorizationServerTemplate = authorizationServerTemplateCreator.CreateAuthorizationServerTemplate(creatorConfig); AuthorizationServerTemplateResource authorizationServerTemplateResource = (AuthorizationServerTemplateResource)authorizationServerTemplate.resources[0]; // assert Assert.Equal($"[concat(parameters('apimServiceName'), '/{authorizationServer.displayName}')]", authorizationServerTemplateResource.name); Assert.Equal(authorizationServer.description, authorizationServerTemplateResource.properties.description); Assert.Equal(authorizationServer.displayName, authorizationServerTemplateResource.properties.displayName); Assert.Equal(authorizationServer.authorizationEndpoint, authorizationServerTemplateResource.properties.authorizationEndpoint); Assert.Equal(authorizationServer.authorizationMethods, authorizationServerTemplateResource.properties.authorizationMethods); Assert.Equal(authorizationServer.clientAuthenticationMethod, authorizationServerTemplateResource.properties.clientAuthenticationMethod); Assert.Equal(authorizationServer.clientId, authorizationServerTemplateResource.properties.clientId); Assert.Equal(authorizationServer.clientRegistrationEndpoint, authorizationServerTemplateResource.properties.clientRegistrationEndpoint); Assert.Equal(authorizationServer.clientSecret, authorizationServerTemplateResource.properties.clientSecret); Assert.Equal(authorizationServer.bearerTokenSendingMethods, authorizationServerTemplateResource.properties.bearerTokenSendingMethods); Assert.Equal(authorizationServer.grantTypes, authorizationServerTemplateResource.properties.grantTypes); Assert.Equal(authorizationServer.resourceOwnerPassword, authorizationServerTemplateResource.properties.resourceOwnerPassword); Assert.Equal(authorizationServer.resourceOwnerUsername, authorizationServerTemplateResource.properties.resourceOwnerUsername); Assert.Equal(authorizationServer.defaultScope, authorizationServerTemplateResource.properties.defaultScope); Assert.Equal(authorizationServer.supportState, authorizationServerTemplateResource.properties.supportState); Assert.Equal(authorizationServer.tokenBodyParameters[0].name, authorizationServerTemplateResource.properties.tokenBodyParameters[0].name); Assert.Equal(authorizationServer.tokenBodyParameters[0].value, authorizationServerTemplateResource.properties.tokenBodyParameters[0].value); }
public async Task <Template> GenerateAuthorizationServersARMTemplate(string apimname, string resourceGroup, string singleApiName, List <TemplateResource> apiTemplateResources) { Console.WriteLine("------------------------------------------"); Console.WriteLine("Extracting authorization servers from service"); Template armTemplate = GenerateEmptyTemplateWithParameters(); List <TemplateResource> templateResources = new List <TemplateResource>(); // isolate api resources in the case of a single api extraction, as they may reference authorization servers var apiResources = apiTemplateResources.Where(resource => resource.type == ResourceTypeConstants.API); // pull all authorization servers for service string authorizationServers = await GetAuthorizationServers(apimname, resourceGroup); JObject oAuthorizationServers = JObject.Parse(authorizationServers); foreach (var item in oAuthorizationServers["value"]) { string authorizationServerName = ((JValue)item["name"]).Value.ToString(); string authorizationServer = await GetAuthorizationServer(apimname, resourceGroup, authorizationServerName); // convert returned authorization server to template resource class AuthorizationServerTemplateResource authorizationServerTemplateResource = JsonConvert.DeserializeObject <AuthorizationServerTemplateResource>(authorizationServer); authorizationServerTemplateResource.name = $"[concat(parameters('ApimServiceName'), '/{authorizationServerName}')]"; authorizationServerTemplateResource.apiVersion = GlobalConstants.APIVersion; // only extract the authorization server if this is a full extraction, or in the case of a single api, if it is referenced by one of the api's authentication settings bool isReferencedByAPI = false; foreach (APITemplateResource apiResource in apiResources) { if (apiResource.properties.authenticationSettings != null && apiResource.properties.authenticationSettings.oAuth2 != null && apiResource.properties.authenticationSettings.oAuth2.authorizationServerId != null && apiResource.properties.authenticationSettings.oAuth2.authorizationServerId.Contains(authorizationServerName)) { isReferencedByAPI = true; } } if (singleApiName == null || isReferencedByAPI) { Console.WriteLine("'{0}' Authorization server found", authorizationServerName); templateResources.Add(authorizationServerTemplateResource); } } armTemplate.resources = templateResources.ToArray(); return(armTemplate); }
public async Task <Template> Create(DeploymentDefinition creatorConfig) { var authorizationTemplate = EmptyTemplate; authorizationTemplate.Parameters.Add(ApiServiceNameParameter.Key, ApiServiceNameParameter.Value); var resources = new List <TemplateResource>(); foreach (var authorizationServerTemplateProperties in creatorConfig.AuthorizationServers) { // create authorization server resource with properties var authorizationServerTemplateResource = new AuthorizationServerTemplateResource() { Name = $"[concat(parameters('ApimServiceName'), '/{authorizationServerTemplateProperties.displayName}')]", Properties = authorizationServerTemplateProperties, DependsOn = new string[] { } }; resources.Add(authorizationServerTemplateResource); } authorizationTemplate.Resources = resources.ToArray(); return(await Task.FromResult(authorizationTemplate)); }