/// <summary> /// Adds SsoServiceInfo (as IOptions of type OAuthServiceOptions) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterOAuthServiceOptions(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } OAuthConnectorOptions oauthConfig = new OAuthConnectorOptions(config); SsoServiceInfo info; if (serviceName == null) { info = config.GetSingletonServiceInfo <SsoServiceInfo>(); } else { info = config.GetRequiredServiceInfo <SsoServiceInfo>(serviceName); } OAuthConnectorFactory factory = new OAuthConnectorFactory(info, oauthConfig); return(container.Register(c => factory.Create(null)).As <IOptions <OAuthServiceOptions> >()); }
public void Constructor_BindsValues() { var appsettings = @" { 'security': { 'oauth2': { 'client': { 'oauthServiceUrl': 'http://foo.bar', 'clientId': 'clientid', 'clientSecret': 'clientsecret', 'userAuthorizationUri': 'userauthorizationuri', 'accessTokenUri': 'accesstokenuri', 'validate_certificates': false, 'scope': ['foo','bar'] }, 'resource' : { 'userInfoUri' : 'userinfouri', 'tokenInfoUri' : 'tokeninfouri', 'jwtKeyUri' : 'jwtkeyuri' } } } }"; var path = TestHelpers.CreateTempFile(appsettings); string directory = Path.GetDirectoryName(path); string fileName = Path.GetFileName(path); ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.SetBasePath(directory); configurationBuilder.AddJsonFile(fileName); var config = configurationBuilder.Build(); var sconfig = new OAuthConnectorOptions(config); Assert.Equal("accesstokenuri", sconfig.AccessTokenUri); Assert.Equal("clientid", sconfig.ClientId); Assert.Equal("clientsecret", sconfig.ClientSecret); Assert.Equal("jwtkeyuri", sconfig.JwtKeyUri); Assert.Equal("http://foo.bar", sconfig.OAuthServiceUrl); Assert.Equal("tokeninfouri", sconfig.TokenInfoUri); Assert.Equal("userauthorizationuri", sconfig.UserAuthorizationUri); Assert.Equal("userinfouri", sconfig.UserInfoUri); Assert.NotNull(sconfig.Scope); Assert.Equal(2, sconfig.Scope.Count); Assert.True(sconfig.Scope.Contains("foo") && sconfig.Scope.Contains("bar")); Assert.False(sconfig.Validate_Certificates); }
public void Validate_Certificates_Binds() { // arrange a configuration with validateCertificates=false var appsettings = new Dictionary <string, string>() { ["security:oauth2:client:validate_certificates"] = "false", }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new OAuthConnectorOptions(config); Assert.False(sconfig.ValidateCertificates); }
public void Configure_NoServiceInfo_ReturnsExpected() { var config = new OAuthConnectorOptions(); var configurer = new OAuthConfigurer(); var result = configurer.Configure(null, config); Assert.NotNull(result); var opts = result.Value; Assert.NotNull(opts); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_AccessTokenUri, opts.AccessTokenUrl); Assert.Equal(OAuthConnectorDefaults.Default_ClientId, opts.ClientId); Assert.Equal(OAuthConnectorDefaults.Default_ClientSecret, opts.ClientSecret); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_JwtTokenKey, opts.JwtKeyUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_CheckTokenUri, opts.TokenInfoUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_AuthorizationUri, opts.UserAuthorizationUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_UserInfoUri, opts.UserInfoUrl); Assert.True(opts.ValidateCertificates); Assert.NotNull(opts.Scope); Assert.Equal(0, opts.Scope.Count); }
public void Update_WithDefaultConnectorOptions_UpdatesOAuthOptions_AsExpected() { var opts = new OAuthServiceOptions(); var config = new OAuthConnectorOptions() { ValidateCertificates = false }; var configurer = new OAuthConfigurer(); configurer.UpdateOptions(config, opts); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_AccessTokenUri, opts.AccessTokenUrl); Assert.Equal(OAuthConnectorDefaults.Default_ClientId, opts.ClientId); Assert.Equal(OAuthConnectorDefaults.Default_ClientSecret, opts.ClientSecret); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_JwtTokenKey, opts.JwtKeyUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_CheckTokenUri, opts.TokenInfoUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_AuthorizationUri, opts.UserAuthorizationUrl); Assert.Equal(OAuthConnectorDefaults.Default_OAuthServiceUrl + OAuthConnectorDefaults.Default_UserInfoUri, opts.UserInfoUrl); Assert.False(opts.ValidateCertificates); Assert.NotNull(opts.Scope); Assert.Equal(0, opts.Scope.Count); }
public void Configure_ServiceInfoOveridesConfig_ReturnsExpected() { var si = new SsoServiceInfo("myId", "myClientId", "myClientSecret", "https://foo.bar"); var config = new OAuthConnectorOptions(); var configurer = new OAuthConfigurer(); var result = configurer.Configure(si, config); Assert.NotNull(result); var opts = result.Value; Assert.NotNull(opts); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_AccessTokenUri, opts.AccessTokenUrl); Assert.Equal("myClientId", opts.ClientId); Assert.Equal("myClientSecret", opts.ClientSecret); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_JwtTokenKey, opts.JwtKeyUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_CheckTokenUri, opts.TokenInfoUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_AuthorizationUri, opts.UserAuthorizationUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_UserInfoUri, opts.UserInfoUrl); Assert.True(opts.ValidateCertificates); Assert.NotNull(opts.Scope); Assert.Equal(0, opts.Scope.Count); }
public void Create_ReturnsOAuthOptions() { var si = new SsoServiceInfo("myId", "myClientId", "myClientSecret", "https://foo.bar"); var config = new OAuthConnectorOptions(); var factory = new OAuthConnectorFactory(si, config); var result = factory.Create(null); Assert.NotNull(result); var opts = result.Value; Assert.NotNull(opts); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_AccessTokenUri, opts.AccessTokenUrl); Assert.Equal("myClientId", opts.ClientId); Assert.Equal("myClientSecret", opts.ClientSecret); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_JwtTokenKey, opts.JwtKeyUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_CheckTokenUri, opts.TokenInfoUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_AuthorizationUri, opts.UserAuthorizationUrl); Assert.Equal("https://foo.bar" + OAuthConnectorDefaults.Default_UserInfoUri, opts.UserInfoUrl); Assert.NotNull(opts.Scope); Assert.Equal(0, opts.Scope.Count); }
public void Constructor_BindsValues() { var appsettings = new Dictionary <string, string>() { ["security:oauth2:client:oauthServiceUrl"] = "https://foo.bar", ["security:oauth2:client:clientid"] = "clientid", ["security:oauth2:client:clientSecret"] = "clientsecret", ["security:oauth2:client:userAuthorizationUri"] = "userauthorizationuri", ["security:oauth2:client:accessTokenUri"] = "accesstokenuri", ["security:oauth2:client:scope:0"] = "foo", ["security:oauth2:client:scope:1"] = "bar", ["security:oauth2:resource:userInfoUri"] = "userinfouri", ["security:oauth2:resource:tokenInfoUri"] = "tokeninfouri", ["security:oauth2:resource:jwtKeyUri"] = "jwtkeyuri" }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new OAuthConnectorOptions(config); Assert.Equal("accesstokenuri", sconfig.AccessTokenUri); Assert.Equal("clientid", sconfig.ClientId); Assert.Equal("clientsecret", sconfig.ClientSecret); Assert.Equal("jwtkeyuri", sconfig.JwtKeyUri); Assert.Equal("https://foo.bar", sconfig.OAuthServiceUrl); Assert.Equal("tokeninfouri", sconfig.TokenInfoUri); Assert.Equal("userauthorizationuri", sconfig.UserAuthorizationUri); Assert.Equal("userinfouri", sconfig.UserInfoUri); Assert.NotNull(sconfig.Scope); Assert.Equal(2, sconfig.Scope.Count); Assert.True(sconfig.Scope.Contains("foo") && sconfig.Scope.Contains("bar")); Assert.True(sconfig.ValidateCertificates); }