小编Lon*_*ong的帖子

ASP.NET Core MVC向Azure AD验证用户,然后创建JWT Bearer Token以调用Web API

我正在构建一个将由Azure AD保护的ASP.NET核心Web API(通过安全保护)app.UseJwtBearerAuthentication

我正在构建一个调用WebAPIASP.NET Core MVC控制器(安全app.UseOpenIdConnectAuthentication).

我正在尝试实现OpenID Connect Basic Client Implementer指南中描述的身份验证流程.

我找到这个模式的示例代码.

一个例子在这里:

/active-directory-dotnet-webapp-webapi-openidconnect/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs)

正在使用.NET(而不是.NET Core)和OWIN.

您可以使用该OnAuthorizationCodeReceived方法并调用AcquireTokenByAuthorizationCodeAsynch以获取您将在WebAPI请求中使用的令牌.

当我尝试在ASP.NET Core MVC中构建类似模式时,我看到以下内容:

  1. 当我配置MVC的应用程序时.UseOpenIdConnectAuthentication使用默认值,然后我可以登录系统,但我没有收到授权码.为我开火的OnTokenValidated事件是事件,而不是AuthorizationCodeReceived上面显示的事件.它有一个身份和一个令牌,这很棒.
  2. 当我配置MVC的应用程序时.UseOpenIdConnectAuthentication response-type = “code”,然后我得到一个代码回来,OnAuthorizationCodeReceived事件发生了,但我没有回复身份.

[我的天蓝色应用程序清单已设置为oauth2AllowImplicitFlow: true.在这种情况下,用户身份验证和令牌生成被压缩成一个步骤,这不像我需要的那样安全,所以我设置为false.

经过进一步调查,我了解到Asp.Net Core基础架构旨在处理多个独立的身份验证中间件条目

Microsoft.AspNetCore.Authentication.JwtBearer/JwtBearerHandler.cs

如果您尝试使用SignIn具有JwtBearer配置的工作流,则编码为抛出"不允许"错误.

因此,看起来我将不得不遵循多种中间件方法.一个用于登录的基于cookie的中间件,以及一个基于承载令牌的中间件,用于承载令牌以访问链接到该App的服务.(而不是来自OWIN示例的模型,其中在接收到认证代码之后调用to service)

https://docs.asp.net/en/latest/security/authorization/limitingidentitybyscheme.html中描述了此功能(多个身份验证中间件). …

openid asp.net-mvc asp.net-web-api openid-connect

9
推荐指数
1
解决办法
1012
查看次数

Azure CosmosDB - 分区键的最大大小为10 GB

我用分区键创建了一个Cosmos DB集合.由于它是一个开发环境,我已将吞吐量降低到1000.现在我收到以下错误.

信息:

"错误":["分区键达到最大大小10 GB"]

Azure Cosmos数据库容器可以创建为固定或无限制.固定大小的容器最大限制为10 GB,吞吐量为10,000 RU/s.要创建无限制容器,必须指定最小吞吐量2,500 RU/s.

现在我已经将吞吐量增加到2500.但是,我仍然得到同样的错误.

azure azure-cosmosdb

9
推荐指数
1
解决办法
7240
查看次数

无法使用IntelliJ Idea 2017.3.4上的maven创建RESTful Web服务

我需要创建一个RESTfulWeb服务与JavaEEIntellijIdea使用maven的librairies.我正在按照本教程帮助我创建这个项目,但我有一个问题:

当我到达第四步:"在创建项目时启用REST支持"时,我无法选择选项:"稍后设置库"以帮助设置maven之后.

intellij的屏幕

如你所见,我没有可用的选择.

有关详细信息,我有IntelliJIDEA版本2017.3.4,我在debian 8上工作.

有没有人能解决我的特定问题?

java rest intellij-idea java-ee maven

6
推荐指数
1
解决办法
1539
查看次数

在 Android 11 上将文件保存到 SD 卡上

我想将照片保存在 Android 11 上 SD 卡的外部应用程序目录中。执行此操作的正确方法是什么?我是否必须将 SAF API 与由操作 ACTION_OPEN_DOCUMENT_TREE 触发的系统选择器一起使用,其中用户必须选择 sd 卡上的文件夹?

或者也许我可以使用这个方法:

File[] externalStorageVolumes =ContextCompat.getExternalFilesDirs(mContext, null);
Run Code Online (Sandbox Code Playgroud)

并假设如果 SD 卡可用,它将打开externalStorageVolumes[1]?这适用于我的 2 台设备(搭载 Android 5 的三星 j1 和搭载 Android 10 的三星 s10),但我没有机会访问更多设备来测试它。

java android android-external-storage scoped-storage

6
推荐指数
1
解决办法
9462
查看次数

普罗米修斯-获得两个最后连续值之间的增量

我有一个衡量指标,例如,当查询panels_meters[30s]给我以下结果时,会给我这样的结果:

查询结果 像这样的查询delta(panels_meters[30s])给了我最后一个值和30秒前的值之间的区别。

但是我现在想要最后两个值之间的差,与指定时间无关。我只想要像panels_meters[0] - panels_meters[1]假设panels_meters作为按时间倒序排序的数据数组那样。

prometheus

2
推荐指数
1
解决办法
1431
查看次数

如何正确地将标签添加到 d3 饼图?

我制作了一个饼图d3 js,我想为每条路径添加标签。

我写了一些代码:

var labels = svg.selectAll('path').insert("text").data(pie(data))
       .text( function (d) { return d.value; })
       .attr("font-family", "sans-serif")
       .attr('x', 0)           
       .attr('y', 0)
       .attr("font-size", "12px")
       .attr("fill", "red");
Run Code Online (Sandbox Code Playgroud)

但是没有可见的结果,只有我可以看到 Chrome 开发人员工具中有新的文本元素。

结果和 Chrome 开发工具

我需要如何更改代码以查看饼图部分上的所有标签?

javascript d3.js

2
推荐指数
1
解决办法
2307
查看次数

无法从 Google Play Console 中的实时开发者通知发送测试通知

我已按照以下步骤操作:

  1. 转到 Google Cloud Console 并创建/选择一个项目。
  2. 在标题上,单击以打开菜单并选择“发布/订阅”,或单击 https://console.cloud.google.com/cloudpubsub/topic/list
  3. 创建/选择一个主题。
  4. 添加服务帐号 google-play-developer-notifications@system.gserviceaccount.com,并为其授予 Pub/Sub Publisher 角色。
  5. 创建订阅。有两种类型的订阅:
    • 拉:我们需要配置我们的服务器来拉新消息。
    • 推送:类似于ios,通知发送到我们配置的端点。
  6. 转到 Google Play 管理中心并选择您的应用。
  7. 单击“开发工具”,然后单击“服务和 API”。
  8. 在实时开发人员通知上键入主题名称。
  9. 您可以发送测试通知来测试所有连接。

但是当我发送测试通知时,我收到此错误:

在主题项目/project_id/topics/topic_name 上发布测试时发生错误。确保正确创建和配置主题,并设置所需的权限。请参阅实时开发人员通知的发布/订阅指南以了解更多信息。

  1. 我已向我的服务帐户授予发布/订阅发布者权限。
  2. 主题名称也正确。
  3. 我可以在 google 开发者控制台中发送来自该主题的测试消息,并且我在我的服务器上收到了该响应。

任何帮助表示赞赏。

android google-cloud-pubsub google-developers-console google-play-console android-subscriptionmanager

2
推荐指数
1
解决办法
827
查看次数