我正在尝试使用 sed 将 nginx.conf 中的文本“localhost”替换为我的 docker 主机的 IP 地址(仅供参考。在本地使用 docker 机器,它在 192.168.99.100 上运行 docker)。
我的 nginx Dockerfile 如下所示:
FROM nginx:alpine
ARG DOCKER_HOST
COPY ./nginx.conf /etc/nginx/nginx.conf
RUN sed -i 's/localhost/${DOCKER_HOST}/g' /etc/nginx/nginx.conf
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
我的 nginx.conf 文件看起来像这样(注意:为简单起见,删除了多数)
http {
sendfile on;
upstream epd {
server localhost:8080;
}
# ...
}
Run Code Online (Sandbox Code Playgroud)
我期待“localhost”被替换为“192.168.99.100”,但它实际上被替换为“${DOCKER_HOST}”。这会导致错误
在上游“${DOCKER_HOST}:8080”中找不到主机
我已经尝试了一些其他的东西,但我似乎无法让这个工作。我可以确认 DOCKER_HOST 构建参数正在通过我的 docker compose 脚本进入 Dockerfile,因为我可以回应这一点。
非常感谢您的任何答复...
我非常精通与OAuth 2.0 和 JWT 相关的大多数事情,但仍然有点令人困惑的一件事是是否/何时使用作用域与角色。
我认为一些混乱来自基于角色的授权在 ASP.NET Core(这是我工作场所的主要语言/框架)中的工作方式。例如; 如果我在 JWT 中有如下角色
{
"aud": "test",
"iss": "http://localhost:8080/auth/realms/test/",
"iat": 1585192274,
"nbf": 1585192274,
"exp": 1585196174,
"sub": "12345",
"roles": ["Admin", "SuperUser"]
}
Run Code Online (Sandbox Code Playgroud)
我可以很容易地保护路线,而无需做太多事情,例如:
[ApiController]
[Route("api/v{version:apiVersion}/template/test")]
public class TestController : Controller
{
[HttpGet]
[Authorize(Roles = "Admin")]
public IActionResult Get()
{
return Ok("test");
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用具有 dotnet 授权策略的范围来实现与上述非常相似的内容,但我只想知道是否有关于是否/何时使用范围或角色的指导,或者这只是一个偏好问题......
我在任何与 OAuth/JWT 相关的 RFC 中都找不到对角色声明的太多参考,而在整个过程中都提到了作用域。
authorization scopes oauth-2.0 jwt role-based-access-control
在FluentValidation中是否有扩展或其他方式来推迟选择子验证器,具体取决于要验证的属性的类型/值?
我的情况是我有一个我要验证的Notification类.这个类有一个Payload属性,它可以是许多Payload类型之一,例如SmsPayload,EmailPayload等.这些Payload子类中的每一个都有自己的相关验证器,例如SmsPayloadValidator和EmailPayloadValidator.除上述内容外,核心库和个别通知提供者均未提及.从本质上讲,这意味着我可以根据需要添加提供程序,并使用IoC连接所有内容.
考虑以下类:
public class Notification
{
public Payload Payload { get; set; }
public IEnumerable<string> Details { get; set; }
}
public abstract class Payload
{
public string Message { get; set; }
public abstract string Type { get; }
}
public class SmsPayload : Payload
{
public List<string> Numbers { get; set; }
public string Region { get; set; }
public string Provider { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有一个Notification验证器和SmsPayloadValidator如下:
public class NotificationValidator : AbstractValidator<Notification>
{
public NotificationValidator(IValidator<Payload> payloadValidator) …
Run Code Online (Sandbox Code Playgroud) .net validation expression-trees fluentvalidation simple-injector
是否可以以某种方式模板化 oauth2 安全方案的基本路径authorizationUrl
来tokenUrl
处理多个环境(例如 dev、sit、uat)?
我工作的公司每个环境都有一个单独的 IDP 租户,每个环境中的服务将针对特定租户/发行者验证令牌。
理想情况下,我可以定义和选择租户基本 URL,类似于我为 API 路由创建服务器模板的方式 - 请参阅此处。
我的securitySchemes
目前看起来像这样:
"securitySchemes": {
"oauth": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://tenant-dev.au.auth0.com/authorize?audience=test",
"tokenUrl": "https://tenant-dev.au.auth0.com/oauth/token"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能想到的唯一多环境方法是使用以下安全方案配置,它允许我指定任何 JWT。缺点是我仍然需要通过一些外部手段获取 JWT...
"securitySchemes": {
"oauth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
Run Code Online (Sandbox Code Playgroud)
笔记;
我工作的公司正在使用 gitflow。
我们遵循每个功能分支的方法,其中实现、测试单个功能,然后 PR 进入开发阶段。当需要发布时,我们会在开发之外创建一个发布分支 - 我们在发布分支上触发构建并将其部署到 TEST 环境。由于合并到开发中的多个功能分支,可能存在一些集成缺陷。这些是直接针对发布分支解决的。一旦我们很高兴与发布分支,我们部署(确切的状态同样是签署过建立由QA),以督促。
在这个阶段,我们需要让我们的发布分支代码回到 develop 并进入 master,这两个分支都是受保护的分支。假设有一些针对 release 分支的提交,我们需要做 2 个 PR,即一个用于 release->develop,一个用于 release->master。
几个问题:
谢谢。
在 Azure DevOps 中,git repos 的分支安全将所有 Azure DevOps 组的“强制推送”属性默认为“未设置”。这实际上拒绝了此权限。
我们在我工作的地方关注 gitflow,并且通常会明确拒绝持久分支、Master 和 Develop 的此权限;但是,对于功能分支,我宁愿将其默认为“允许”,这样管理员就不必参与其中。有没有办法将所有分支的 Azure DevOps“贡献者”组的“强制推送”默认为“允许”,除非明确设置为“拒绝”?
干杯。
将 .NET Core通用主机用于处理异步消息的应用程序。
我们使用通用主机而不是 .NET Core WebHost 的原因是因为我的一位同事曾见过几次 MassTransit(我们正在使用的轻量级服务总线框架)作为 .NET Core 的一部分运行在 Linux 上,WebHost 并不总是在收到 SIGTERM 信号后正常关闭 - 我们必须使用 SIGKILL 来强行终止进程。
该应用程序将在 Kubernetes 上运行,我们希望使用 K8s 活性探针实现自我修复架构。在其他使用 WebHost 的 .NET Core 应用程序中,我们使用了.NET Core 2.2 中引入的运行状况检查,但我不知道如何在通用主机中使用这样的中间件。
在 WebHost 中,我可以按如下方式配置中间件:
app.UseHealthChecks(appSettings.HealthChecksPath ?? "/health");
Run Code Online (Sandbox Code Playgroud)
如果使用 .NET Core 通用主机,我将如何去做呢...
亲切的问候。
.net-core asp.net-core asp.net-core-middleware asp.net-core-2.2 .net-core-2.2
我正在尝试使用客户端凭据通过 Swagger UI(由 Swashbuckle.AspNetCore 自动生成)向我的 Auth0 租户进行身份验证。
我收到以下错误:
Auth ErrorError,错误:access_denied,描述:不允许非全局客户端访问 APIv1
这是一个屏幕截图:
开放 API 规范如下所示:
"securitySchemes": {
"auth0": {
"type": "oauth2",
"flows": {
"clientCredentials": {
"tokenUrl": "https://example.auth0.com/oauth/token"
},
"authorizationCode": {
"authorizationUrl": "https://example.auth0.com/authorize?audience=test",
"tokenUrl": "https://example.auth0.com/oauth/token",
"scopes": { }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
audience
我怀疑这与未指定有关。我在授权代码流方面遇到了类似的问题,但设法通过将受众作为查询字符串参数附加到authorizationUrl
(如上所示)来实现此工作。不幸的是,同样的技巧不适用于客户端凭证流(即尝试将受众附加到tokenUrl
)。我需要支持客户端凭证流,因为一条或多条路由需要仅锁定到 M2M 令牌。
有趣的是,如果我使用全局客户端 ID/秘密(在租户的高级设置下找到),它就可以工作,但我不确定我们是否应该使用它......
其他人也遇到过这个问题,如果是的话,找到解决方案是否运气好?
我正在尝试将TFS存储库迁移到git,但我遇到了一个问题.
查看TFS中此特定存储库的历史记录,看起来好像已将父级复制到新的TFS存储库中,然后稍后将父级无基础合并到其中(或类似的东西).
当我运行"git tfs clone"命令时,我收到错误:
git-tfs无法找到分支'$/x'与其父分支'$/y'之间的根变更集(即最后一次常见提交)...
是否可以使用git tfs clone限制历史记录?我知道我可以使用快速克隆,但这只能给我最后的提交.理想情况下,我想回到特定的更改集,或者排除没有共同父级的无基础合并变更集...
干杯!
dotnet core 2.2.3 和 Keycloak 4.5.0 基于角色的授权存在一些小问题。
在 Keycloak 中,我定义了一个“tester”角色和一个客户端角色“developer”,并为“admin”用户定义了适当的角色映射。在对 Keycloak 进行身份验证后;如果我查看 jwt.io 中的 JWT,我可以看到以下内容:
{
"realm_access": {
"roles": [
"tester"
]
},
"resource_access": {
"template": {
"roles": [
"developer"
]
},
...
},
...
}
Run Code Online (Sandbox Code Playgroud)
在 .NET 核心中,我尝试了很多事情,例如添加[Authorize(Roles = "tester")]
或[Authorize(Roles = "developer")]
到我的控制器方法以及使用基于策略的授权,我context.User.IsInRole("tester")
在其中检查我的AuthorizationHandler<TRequirement>
实现。
如果我在身份验证处理程序中设置了一些断点。当它被击中时,我可以看到“tester”和“developer”角色列为context.user.Claims
IEnumerable下的项目,如下所示。
{realm_access: {"roles":["tester"]}}
{resource_access: {"template":{"roles":["developer"]}}}
Run Code Online (Sandbox Code Playgroud)
所以,我应该能够被用于验证值做成功的AUTH处理器的授权realm_access
和resource_access
中context.user.Claims
集,但这需要我反序列化要求值,这只是似乎是JSON字符串。
我在想必须有更好的方法,或者我没有做对的事情。
git ×3
.net-core ×2
openapi ×2
.net ×1
asp.net-core ×1
auth0 ×1
azure-devops ×1
dockerfile ×1
git-flow ×1
git-tfs ×1
jwt ×1
keycloak ×1
oauth ×1
oauth-2.0 ×1
scopes ×1
sed ×1
swagger ×1
swagger-ui ×1
swashbuckle ×1
tfs ×1
validation ×1