Tag: google oauth

强制用户使用mvc c中的Google Organization(G Suite)帐户登录

我在我的mvc网站上实施了Google身份validation。 这是我的示例代码 – AuthConfig.cs public static class AuthConfig { private static string GoogleClientId = ConfigurationManager.AppSettings[“GoogleClientId”]; private static string GoogleClientSecret = ConfigurationManager.AppSettings[“GoogleClientSecret”]; public static void RegisterAuth() { GoogleOAuth2Client clientGoog = new GoogleOAuth2Client(GoogleClientId, GoogleClientSecret); IDictionary extraData = new Dictionary(); OpenAuth.AuthenticationClients.Add(“google”, () => clientGoog, extraData); } } Global.asax中 AuthConfig.RegisterAuth(); AccountController.cs public ActionResult RedirectToGoogle() { string provider = “google”; […]

与Google的WPF应用程序身份validation

我在OAuth中找到了许多不同的解决方案,并且有一些库或纯粹的请求( https://github.com/googlesamples/oauth-apps-for-windows )。 但是,没有一个解决方案看起来像我真正需要的解决方案。 目前,我的应用程序使用自己的数据库供用户使用WCF服务请求(使用用户名和密码)登录。 但是,所有用户都使用Google帐户创建了域名电子邮件,因此我想添加另一个“登录Google”按钮,这样可以确保用户也可以使用他的Google电子邮件密码对登录。 我不需要返回令牌以供进一步使用等。 在WPF / C#桌面应用程序中实现此function的最简单方法是什么?

如何使用System.IdentityModel.Tokens.Jwt使用Google OAuth2兼容算法RSA SHA-256生成JWT?

我正在尝试创建一个JWT来使用System.IdentityModel.Tokens.Jwt在Google文档中描述的服务帐户进行授权。 我有以下代码: byte[] key = Convert.FromBase64String(“…”); var certificate = new X509Certificate2(key, “notasecret”); DateTime now = DateTime.UtcNow; TimeSpan span = now – UnixEpoch; Claim[] claims = { new Claim(“iss”, “email@developer.gserviceaccount.com”), new Claim(“scope”, “https://www.googleapis.com/auth/plus.me”), new Claim(“aud”, “https://accounts.google.com/o/oauth2/token”), new Claim(“iat”, span.TotalSeconds.ToString()), new Claim(“exp”, span.Add(TimeSpan.FromHours(1)).TotalSeconds.ToString()) }; JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); var descriptor = new SecurityTokenDescriptor { SigningCredentials = […]

ASP.net核心web api:使用Facebook / Google OAuth访问令牌进行身份validation

几天来,我正试图通过Google和Facebook获得OAuth认证,以便在我的ASP.net核心web api项目中工作。 我目前的状态是: 我有一个ASP.net核心Web Api项目,用户需要在其中进行身份validation 我有一个有角度的2 web应用程序,它应该使用我的web api(带身份validation) 我有一个Android应用程序,它应该使用我的web api(带身份validation) 我的目标是: 使用Google / Facebook作为OAuth提供商进行登录 稍后:添加自己的用户帐户(可能使用IdentityServer4) 无需重定向到特殊的登录网站(如IdentityServer4解决方案)。 只需点击应用中的facebook / google按钮,即可访问,完成! 在我的Android和角度应用程序中,我能够从谷歌/ Facebook检索访问令牌。 现在,我想使用OAuth隐式流,使用给定的访问令牌对我的web api上的用户进行身份validation(将令牌作为承载令牌放入标头中) 有我的问题:有没有任何genric方式来轻松做到这一点? 我不想使用facebook / google SDK。 我试过以下: 使用IdentityServer4 :有了这个,我可以在我的webapi上使用facebook / google登录,但是需要重定向到IdentityServer4登录页面。 有没有办法在我的应用程序中点击google / fb-Button并登录, 而无需重定向到identityServer登录页面? 使用google / facebook身份validation中间件 ( https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/ ):但他们没有validation我发送的持票人令牌(尝试了无数种方法来实现正确的validation)。 这甚至可以在web api中使用吗? 试图使用Microsoft.AspNetCore.Authentication.JwtBearer-Middleware并自己为google / facebook添加必要的选项,但也没有validation(以及无数次尝试) 在过去的几天里,我已经尝试了很多可能的解决方案,我完全陷入困境并且忘记了为实现这一目标我需要做些什么。 在这一点上,我已经阅读了几乎每个asp.net web api oauth教程/ stackoverflow条目,但无法弄清楚如何在我的情况下使用这个我想要的。 大多数教程仅适用于mvc-Websites或使用IdentityServer4重定向到其登录页面。 […]

GoogleWebAuthorizationBroker无法从IIS主机运行

我使用以下代码使用Google .Net客户端库向Google进行身份validation。 public static void auth() { string clientId = “xxxxxx.apps.googleusercontent.com”; string clientSecret = “xxxxx”; string[] scopes = new string[] { “https://www.googleapis.com/auth/contacts.readonly” }; // view your basic profile info. try { // Use the current Google .net client library to get the Oauth2 stuff. UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = […]

使用Json文件进行Google服务帐户身份validation

我一直关注Googles网站上的Oauth2服务帐户文档。 我也一直在挑选Googles .net客户端库,试图让它工作。 我已经到达了计算机的签名阶段。 Google的隐私密钥如下所示 —–BEGIN PRIVATE KEY—–\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDcmuyQC8rwWdPQ\nmIdksgzSJbVWTU5MeUxy+HAap3yut9wR/L6KGMJ4FBYcsPmXN5gQAhErybavGoZG\nfS1X1/PCpPVpTCA4749K8gbvuZg1JEIAqMtmHiBBrJj5l8eiekQc8pd7Pq35H4wi\nJYXAJGwggPcttkLBRi0xZzd+jdwL1st+7zRt8nMao/xFibInBBvKwb/gP4mJxlQg\nnRdGO6zgMk+PLTcA5C+gFyPA4SdkylrLib5CJO9123FgcfTJZJTukeHo1v0EfU+4\n3bK8HBZnOFa4DHH4mXhkhgYMjibv4Sr/WCEoomJJwNN04SbUEdyhgpM2rZ3cvx+4\nsmB0SQflAgMBAAECggEAXZ100+/dL7++zh9cHVQdcrRDzprBplw3H/bjg7wdgftN\n7Wgm5214YQKNG6HSWORjqC9oX/+agZYs8w69xjBDJg9ggU2nwuGOGky4utQ0jiCT\nzbnTjsMsBxKaXBiXxBBEhVBBDjDcHQLRMdBggNgz9lskCYb1rxT7qqJVf2PtxCuZ\nuxw3whLMRHXvKosER12sMQgGB/0+Nk86GWCqPigpfu7Ec92V0ffcSUaq3gjIUD54\n67TduTWaRDQNB+j2yQsWQZnqRv+TvIXOjinAI+pPbvCUovtiTSZAoz3EalsiXQ0l\nUqDVx26uzEJqhB2kzvAeApuW2Nd5EPxUnf48c4xh4QKBgQDw01mEChWyENV5CBKU\nMSfY0rpAPtq7ahHRR458ZKtITDBlqiZLMjydI65Rr1XxpQ3pJZALObMdUhbvCDfm\nu4BY/lCCt+hcdt9IICvVZsgXgvb6M+Fj2IbYZcAnOm4T1Z1D3I+pW5NdK2ALQRiK\nWsGINOqWCB9WRd7nhmb/XwWyjQKBgQDqgWht5laDuLMc4qpj9finY4qmk57eT3KG\npzbVlT3h7kv7j/j6e+6o9psrqdf1PXpu9XZi3bPtPbH1fX9x5pZgJQRMP4FGOURY\nQDkJfiOOSN/8Vl0senqkscT7DSbe2BqyqQlSlTB4BBF29p1wxb5Wz5HH2BvYE2zI\ni9B4WJcAuQKBgADnajCasRYoBgUcSKWRwaqIr/ZJxhxp+4Mjl59T6WiuEIhxKQ+j\nMqMMXT0lQVdU3UaAw5enMcrsYfWnvD37ejHbUoYLFq4yLAhjRobYieu8rByoUTJE\nv8zUJPKAv6UHaj20+D0UgOsanJOuPN9YE93lBPRnN2blgD6yPHS88JKJAoGABFyh\n16F4LH0L/9aLes6BcIOeeZi3VMU/iRelInXjL8eh7CzyYZ5agxQLMNW46ZvaIiQ4\nroAXL6t9GubZrwGt/F3T5aMswWShS87uAKoy+RuL5wKoOwKQM24HDvBgr7ZvULFq\nNfoGa8UPmhneNdHHx4+W05PGeM9rr5NCLmrfbCkCgYA0nMvEDIJvU3KA3S1cQ3fs\nVopRJwqRIFFL1cHTWaEyIsxEh6i/zAUc/habK82dN3/ZDn/XvWY14k7VZPsSdDC9\noVlQj2z8DVO2K99Oxyh0VlthtecW8exjzkIPJL4srOSl/dooQZS/7ZZyaRQU/BLI\nMdzKHlUKKXWcUU+Ko8W4+w\u003d\u003d\n—–END PRIVATE KEY—–\n 清理钥匙 首先,我清理一下钥匙 private const string PrivateKeyPrefix = “—–BEGIN PRIVATE KEY—–“; private const string PrivateKeySuffix = “—–END PRIVATE KEY—–“; /// Converts the PKCS8 private key to RSA parameters. This method uses the Bouncy Castle library. private static RSAParameters ConvertPKCS8ToRSAParameters(string pkcs8PrivateKey) { var base64PrivateKey = pkcs8PrivateKey.Replace(PrivateKeyPrefix, “”).Replace(“\r\n”, […]

Google的间歇性ASP.NET oAuth问题,AuthenticationManager.GetExternalIdentityAsync返回null

我正在尝试使用Google作为外部登录提供程序来解决间歇性问题。 尝试登录时,会将用户重定向回登录页面,而不是进行身份validation。 问题出现在这一行(下面的链接第55行),GetExternalIdentityAsync返回null。 var externalIdentity = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie); 完整的代码是: [Authorize] public abstract class GoogleAccountController : Controller where TUser : Microsoft.AspNet.Identity.IUser { public IAuthenticationManager AuthenticationManager { get { return HttpContext.GetOwinContext().Authentication; } } public abstract UserManager UserManager { get; set; } [AllowAnonymous] [HttpGet] [Route(“login”)] public ActionResult Login(string returnUrl) { ViewData.Model = new LoginModel() { Message = TempData[“message”] […]

validationGoogle Id令牌

我正在使用ASP.NET Core为Android客户端提供API。 Android以Google帐户登录,并将ID令牌JWT传递给API作为持票人令牌。 我有应用程序工作,它确实通过了身份validation检查,但我不认为它正在validation令牌签名。 根据Google的文档,我可以将此url称为https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123 ,但我无法在服务器端找到相应的挂钩来执行此操作。 另外根据Google文档,我可以以某种方式使用客户端访问API来执行此操作,而无需每次都调用服务器。 我的配置代码: app.UseJwtBearerAuthentication( new JwtBearerOptions() { Authority = “https://accounts.google.com”, Audience = “hiddenfromyou.apps.googleusercontent.com”, TokenValidationParameters = new TokenValidationParameters() { ValidateAudience = true, ValidIssuer = “accounts.google.com” }, RequireHttpsMetadata = false, AutomaticAuthenticate = true, AutomaticChallenge = false, }); 如何让JWTBearer中间件validation签名? 我已经接近放弃使用MS中间件并自己动手了。

服务应用程序的Google oAuth 2.0(JWT令牌请求)

我正在尝试为此处描述的服务帐户实施Google oAuth 2:在UnityScript上使用https://developers.google.com/accounts/docs/OAuth2ServiceAccount (或C# – 这无关紧要,因为它们都使用相同的Mono .NET类)。 我在这里找到了类似的主题: C#中是否有JSON Web Token(JWT)示例? web-token-jwt-example-in-c但我仍然没有成功。 首先,我已生成标题和声明集(就像在谷歌文档中一样) var header: String = GetJWTHeader(); var claimset: String = GetJWTClaimSet(); 结果是(为清晰起见,用新行分隔): { “ALG”: “RS256”, “典型”: “智威汤逊”} { “ISS”: “425466719070-1dg2rebp0a8fn9l02k9ntr6u5o4a8lp2.apps.googleusercontent.com” “范围”:“ https://www.googleapis.com/auth/prediction ”, “aud”:“ https://accounts.google.com/o/oauth2/token ”, “EXP”:1340222315, “IAT”:1340218715} Base-64编码方法: public static function Base64Encode(b: byte[]): String { var s: String = Convert.ToBase64String(b); s = […]

如何使用刷新令牌续订访问令牌?

我正在使用带有OWIN的 ASP.NET MVC 5 。 我做了很多研究,但没有找到如何使用刷新令牌续订访问令牌。 我的方案是:用户第一次访问我的应用时,他或她授予访问我读取API返回的刷新令牌的帐户的权限。 当用户返回我的应用程序时,我需要根据“刷新令牌”刷新访问令牌。 有人可以提供一些代码吗? 这是我到目前为止所取得的成就: Startup.Auth.cs: var googleOAuth2AuthenticationOptions = new GoogleOAuth2AuthenticationOptions { Caption = “Google+”, ClientId = Parameters.Instance.Authentication.oAuth.GooglePlus.ClientId, ClientSecret = Parameters.Instance.Authentication.oAuth.GooglePlus.ClientSecret, CallbackPath = new PathString(“/oauth-login-return”), Provider = new GoogleOAuth2AuthenticationProvider { OnAuthenticated = async context => { context.Identity.AddClaim(new Claim(ClaimTypes.Name, context.Identity.FindFirstValue(ClaimTypes.Name))); context.Identity.AddClaim(new Claim(ClaimTypes.Email, context.Identity.FindFirstValue(ClaimTypes.Email))); context.Identity.AddClaim(new Claim(“picture”, context.User.GetValue(“picture”).ToString())); context.Identity.AddClaim(new Claim(“profile”, context.User.GetValue(“profile”).ToString())); context.Identity.AddClaim( new […]