/// <inheritdoc />
 public async Task <IAuthorizationServer> CreateAuthorizationServerAsync(IAuthorizationServer authorizationServer, CancellationToken cancellationToken = default(CancellationToken))
 => await PostAsync <AuthorizationServer>(new HttpRequest
 {
     Uri     = "/api/v1/authorizationServers",
     Verb    = HttpVerb.Post,
     Payload = authorizationServer,
 }, cancellationToken).ConfigureAwait(false);
 /// <inheritdoc />
 public async Task <IAuthorizationServer> UpdateAuthorizationServerAsync(IAuthorizationServer authorizationServer, string authServerId, CancellationToken cancellationToken = default(CancellationToken))
 => await PutAsync <AuthorizationServer>(new HttpRequest
 {
     Uri            = "/api/v1/authorizationServers/{authServerId}",
     Verb           = HttpVerb.Put,
     Payload        = authorizationServer,
     PathParameters = new Dictionary <string, object>()
     {
         ["authServerId"] = authServerId,
     },
 }, cancellationToken).ConfigureAwait(false);
示例#3
0
		/// <summary>
		/// Creates a serializer/deserializer for this type.
		/// </summary>
		/// <param name="authorizationServer">The authorization server that will be serializing/deserializing this authorization code.  Must not be null.</param>
		/// <returns>A DataBag formatter.</returns>
		internal static IDataBagFormatter<AuthorizationCode> CreateFormatter(IAuthorizationServer authorizationServer) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			Contract.Ensures(Contract.Result<IDataBagFormatter<AuthorizationCode>>() != null);

			return new UriStyleMessageFormatter<AuthorizationCode>(
				authorizationServer.CryptoKeyStore,
				AuthorizationCodeKeyBucket,
				signed: true,
				encrypted: true,
				compressed: false,
				maximumAge: AuthorizationCodeBindingElement.MaximumMessageAge,
				decodeOnceOnly: authorizationServer.VerificationCodeNonceStore);
		}
示例#4
0
		/// <summary>
		/// Creates a serializer/deserializer for this type.
		/// </summary>
		/// <param name="authorizationServer">The authorization server that will be serializing/deserializing this authorization code.  Must not be null.</param>
		/// <returns>A DataBag formatter.</returns>
		internal static IDataBagFormatter<AuthorizationCode> CreateFormatter(IAuthorizationServer authorizationServer) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			Contract.Ensures(Contract.Result<IDataBagFormatter<AuthorizationCode>>() != null);

			var cryptoStore = authorizationServer.CryptoKeyStore;
			ErrorUtilities.VerifyHost(cryptoStore != null, OAuthStrings.ResultShouldNotBeNull, authorizationServer.GetType(), "CryptoKeyStore");

			return new UriStyleMessageFormatter<AuthorizationCode>(
				cryptoStore,
				AuthorizationCodeKeyBucket,
				signed: true,
				encrypted: true,
				compressed: false,
				maximumAge: MaximumMessageAge,
				decodeOnceOnly: authorizationServer.NonceStore);
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="AuthorizationServer"/> class.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		public AuthorizationServer(IAuthorizationServer authorizationServer) {
			Contract.Requires<ArgumentNullException>(authorizationServer != null);
			this.OAuthChannel = new OAuth2AuthorizationServerChannel(authorizationServer);
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="OAuth2AuthorizationServerChannel"/> class.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		protected internal OAuth2AuthorizationServerChannel(IAuthorizationServer authorizationServer)
			: base(MessageTypes, InitializeBindingElements(authorizationServer)) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			this.AuthorizationServer = authorizationServer;
		}
		/// <summary>
		/// Initializes the binding elements for the OAuth channel.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		/// <returns>
		/// An array of binding elements used to initialize the channel.
		/// </returns>
		private static IChannelBindingElement[] InitializeBindingElements(IAuthorizationServer authorizationServer) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			var bindingElements = new List<IChannelBindingElement>();

			// The order they are provided is used for outgoing messgaes, and reversed for incoming messages.
			bindingElements.Add(new MessageValidationBindingElement());
			bindingElements.Add(new TokenCodeSerializationBindingElement());

			return bindingElements.ToArray();
		}
		/// <summary>
		/// Initializes the binding elements for the OAuth channel.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		/// <returns>
		/// An array of binding elements used to initialize the channel.
		/// </returns>
		private static IChannelBindingElement[] InitializeBindingElements(IAuthorizationServer authorizationServer) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			var bindingElements = new List<IChannelBindingElement>();

			bindingElements.Add(new AuthServerAllFlowsBindingElement());
			bindingElements.Add(new AuthorizationCodeBindingElement());
			bindingElements.Add(new AccessTokenBindingElement());
			bindingElements.Add(new AccessRequestBindingElement());

			return bindingElements.ToArray();
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="AuthorizationServer"/> class.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		public AuthorizationServer(IAuthorizationServer authorizationServer) {
			Requires.NotNull(authorizationServer, "authorizationServer");
			this.Channel = new OAuth2AuthorizationServerChannel(authorizationServer);
		}
		/// <summary>
		/// Initializes the binding elements for the OAuth channel.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		/// <returns>
		/// An array of binding elements used to initialize the channel.
		/// </returns>
		private static IChannelBindingElement[] InitializeBindingElements(IAuthorizationServer authorizationServer) {
			Contract.Requires<ArgumentNullException>(authorizationServer != null);
			var bindingElements = new List<IChannelBindingElement>();

			bindingElements.Add(new AuthServerAllFlowsBindingElement());
			bindingElements.Add(new AuthorizationCodeBindingElement());
			bindingElements.Add(new AccessRequestBindingElement());

			return bindingElements.ToArray();
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="OAuth2AuthorizationServerChannel"/> class.
		/// </summary>
		/// <param name="authorizationServer">The authorization server.</param>
		protected internal OAuth2AuthorizationServerChannel(IAuthorizationServer authorizationServer)
			: base(InitializeBindingElements(authorizationServer)) {
			Contract.Requires<ArgumentNullException>(authorizationServer != null);
			this.AuthorizationServer = authorizationServer;
		}