我正在ASP.NET CORE 1.0上构建REST API.在生产中,IMHO非常有用,不使用JIT,因为带有应用程序的docker容器正在向上和向下扩展,在CI期间反复重新部署,因此每个已部署容器的即时编译会导致可怕的滞后,LB健康检查死亡和其他痛苦.
在我阅读时,使用dotnet CLI的本机编译已停止.我尝试使用CoreRT进行构建,但没有运气(由于复杂性需求的详细信息).
由于这个问题非常抽象,我不提供示例代码或详细信息,所以一开始几乎没有问题:
(目标平台将是ubuntu-14.04-x64 docker镜像以及编译平台.出于开发目的,在OSX上编译它也很不错.)
先感谢您.
有没有方便的方法从使用.NET Core的 PEM格式的.p12证书导出私钥/公钥?没有在低级别操作字节?我用谷歌搜索了几个小时,几乎没有任何东西在.net核心中可用,或者它没有记录在任何地方..
我们有一个X509Certificate2
var cert = new X509Certificate2(someBytes, pass);
var privateKey = cert.GetRSAPrivateKey();
var publicKey = cert.GetRSAPublicKey();
// assume everything is fine so far
Run Code Online (Sandbox Code Playgroud)
现在我需要将密钥导出为两个单独的PEM密钥.我已经尝试PemWriter过BouncyCastle,但是这些类型与Core的System.Security.Cryptography不兼容..没有运气.
- -编辑 - -
换句话说,我找到了一种方法来写这个:
$ openssl pkcs12 -in path/to/cert.p12 -out public.pub -clcerts -nokeys
$ openssl pkcs12 -in path/to/cert.p12 -out private.key -nocerts
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
谢谢 ...
你好,
在我的ASP.NET Core应用程序中,我正在使用OpenIdConnectServer进行Api身份验证。一切正常。
但是我无法解决一件事-如何设置自定义文件夹以保留令牌签名密钥?
在服务配置中,我有:
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"keys/"));
Run Code Online (Sandbox Code Playgroud)
首次运行后,将在此处创建一个应用程序密钥。但是OpenIdServer可以自行管理密钥。
app.UseOpenIdConnectServer(options => {
...
options.DataProtectionProvider = app.ApplicationServices.GetDataProtectionProvider();
...
});
Run Code Online (Sandbox Code Playgroud)
尽管如此,凭据签名密钥还是在默认位置创建的:
A new RSA key ... persisted on the disk: /home/.../.aspnet/aspnet-contrib/oidc-server/<some guid>.key.
Run Code Online (Sandbox Code Playgroud)
那是错误还是功能?如何强制服务器将密钥也存储在keys/文件夹中?
摘要-为什么要这样做:
我的想法是从n个 docker镜像构建一个API ,将其隐藏在负载平衡器之后,然后在云中运行。问题是-当docker中的每个实例创建其自己的应用程序和签名密钥时,加密的auth令牌将不适用于除已用其密钥创建并签名令牌的其他实例以外的任何其他实例。因此,我试图将相同的密钥分配给每个运行的docker映像。如果可能,到预定义的应用程序文件夹。
还是有更好的方法或最佳做法?
预先谢谢你。
c# openid-connect aspnet-contrib asp.net-core asp.net-core-1.0
这些 pod 有一些主机名,即:
从 podrill-staging-75cddd789-kbzsq 我无法解析drill-staging-75cddd789-amsrj的主机名,反之亦然。解析 self pod 的名称有效。
我尝试设置各种 dnsPolicies:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "app.name" . }}
namespace: {{ .Values.global.namespace }}
spec:
replicas: 2
selector:
matchLabels:
app: {{ include "app.name" . }}
template:
metadata:
labels:
app: {{ include "app.name" . }}
spec:
containers:
- name: {{ include "app.name" . }}
image: ...
resources:
...
ports: …Run Code Online (Sandbox Code Playgroud) 你好,
我用google搜索过,但是有一百个来自ASP.NET的例子,但没有关于ASP.NET Core的内容.
为了获得密码重置工作,我需要在DI中注册一个IUserTokenProvider实例.
没有它,我会在以下行获得例外:
var result = await _userManager.ResetPasswordAsync(user, token, password);
Run Code Online (Sandbox Code Playgroud)
例外
"No IUserTokenProvider named 'PasswordResetTokenProvider' is registered."
Run Code Online (Sandbox Code Playgroud)
这是有道理的,所以我试着在DI中注册它:
services.AddSingleton<IUserTokenProvider<User>, DataProtectorTokenProvider<User>>();
Run Code Online (Sandbox Code Playgroud)
但是界面IUserTokenProvider不存在.我Microsoft.AspNetCore.Identity在文件中使用.它甚至不存在于项目gitlab中.
好吧,在挖掘了身份源代码后,我发现了一个类似的界面IUserTwoFactorTokenProvider<T>.让我们改用它:
services.AddSingleton<IUserTwoFactorTokenProvider<User>, DataProtectorTokenProvider<User>>();
Run Code Online (Sandbox Code Playgroud)
......没有运气
TL; DR:
请 - 如何在ASP.NET Core中重置密码?充其量只是一些例子.
先感谢您.
c# ×4
.net-core ×2
asp.net-core ×2
.net-native ×1
compilation ×1
corert ×1
kube-dns ×1
kubernetes ×1
networking ×1
pem ×1