- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Azure 托管 Web 应用程序执行 OAuth2,但我无法使用服务帐户(此处有许多可用的解决方案,但它们都坚持服务帐户/证书),而我需要用户由 Google 进行身份验证和授权。
代码:
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = _clientId, ClientSecret = _clientSecret },
scopes,
User.Identity.Name,
CancellationToken.None,
new FileDataStore("GA.Auth.Store")) /* tried this to be null as well */
.Result;
var service = new AnalyticsService(
new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Analytics API Sample"
});
它在本地工作,但在部署为 Azure Web 应用程序时出现此异常:
[HttpListenerException (0x5): Access is denied]
Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +82
Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) +76
Google.Apis.Auth.OAuth2.<AuthorizeAsync>d__1.MoveNext() +233
我猜测 GoogleWebAuthorizationBroker.AuthorizeAsync 正在尝试建立一个 http 监听器,这在 Azure Web 应用程序中是不可能的。
我尝试使用 Azure Web 应用程序身份验证。这确实对用户进行了身份验证,但我如何检索经过身份验证的用户以向 Google 授权他?
顺便说一句:因为我需要 GA Real-Time,所以我只能使用 GA Reporting v3 库。
最佳答案
GoogleWebAuthorizationBroker.AuthorizeAsync 专为已安装的应用程序而设计,它无法托管,因为它会尝试打开网络浏览器窗口以征求服务器的同意。
您应该关注web示例。
public void ConfigureServices(IServiceCollection services)
{
...
// This configures Google.Apis.Auth.AspNetCore3 for use in this app.
services
.AddAuthentication(o =>
{
// This forces challenge results to be handled by Google OpenID Handler, so there's no
// need to add an AccountController that emits challenges for Login.
o.DefaultChallengeScheme = GoogleOpenIdConnectDefaults.AuthenticationScheme;
// This forces forbid results to be handled by Google OpenID Handler, which checks if
// extra scopes are required and does automatic incremental auth.
o.DefaultForbidScheme = GoogleOpenIdConnectDefaults.AuthenticationScheme;
// Default scheme that will handle everything else.
// Once a user is authenticated, the OAuth2 token info is stored in cookies.
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogleOpenIdConnect(options =>
{
options.ClientId = {YOUR_CLIENT_ID};
options.ClientSecret = {YOUR_CLIENT_SECRET};
});
}
关于c# - 使用 GoogleWebAuthorizationBroker.AuthorizeAsync 时出现 HttpListenerException "access is denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38560850/
我正在使用 MS Auth 登录 Azure 应用服务中托管的 .NET Core 6 Web 应用的用户。尝试在浏览器中打开 MS UI 进行身份验证时出现以下情况。 An HttpListener
这个问题在这里已经有了答案: HttpListener Access Denied (12 个答案) 关闭 6 年前。 我编写了一个 C# 应用程序,它使用 HttpListener 来监听 HTT
在我的网站(本地)上,一切运行正常。 但由于某种原因,我在 Azure 上运行它时遇到错误:here is the link 这是堆栈跟踪: [HttpListenerException (0x5):
我正在尝试使用 Azure 托管 Web 应用程序执行 OAuth2,但我无法使用服务帐户(此处有许多可用的解决方案,但它们都坚持服务帐户/证书),而我需要用户由 Google 进行身份验证和授权。
我正在尝试使用 Azure 托管 Web 应用程序执行 OAuth2,但我无法使用服务帐户(此处有许多可用的解决方案,但它们都坚持服务帐户/证书),而我需要用户由 Google 进行身份验证和授权。
我正在运行来自 Scott Allen's ASP.Net Fundamentals course 的以下代码 using System; using Microsoft.Owin.Hosting;
我是一名优秀的程序员,十分优秀!