ApplicationOAuthProvider.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. using System.Threading.Tasks;
  3. using Microsoft.Owin.Security.OAuth;
  4. namespace Winsoft.GOV.XF.WX.Providers
  5. {
  6. public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
  7. {
  8. private readonly string _publicClientId;
  9. public ApplicationOAuthProvider(string publicClientId)
  10. {
  11. if (publicClientId == null)
  12. {
  13. throw new ArgumentNullException("publicClientId");
  14. }
  15. _publicClientId = publicClientId;
  16. }
  17. public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
  18. {
  19. if (context.ClientId == _publicClientId)
  20. {
  21. Uri expectedRootUri = new Uri(context.Request.Uri, "/");
  22. if (expectedRootUri.AbsoluteUri == context.RedirectUri)
  23. {
  24. context.Validated();
  25. }
  26. else if (context.ClientId == "web")
  27. {
  28. var expectedUri = new Uri(context.Request.Uri, "/");
  29. context.Validated(expectedUri.AbsoluteUri);
  30. }
  31. }
  32. return Task.FromResult<object>(null);
  33. }
  34. }
  35. }