我正在使用适用于Android的Azure移动应用SDK.
public class MyClass {
public String Id;
public String Code;
public DateTimeOffset ClientCreatedAt;
}
MyClass myClass = new MyClass();
myClass.Id = "1234567890";
myClass.Code = "dfgdrvyet";
myClass.ClientCreatedAt = new DateTimeOffset(new Date());
Run Code Online (Sandbox Code Playgroud)
它使用如下:
MobileServiceSyncTable<MyClass> myClassSyncTable = _client.getSyncTable(MyClass.class);
ListenableFuture<MyClass> responseFuture = myClassSyncTable.insert(myClass);
Run Code Online (Sandbox Code Playgroud)
在插入时,将ClientCreatedAt其设置为null,当我调查insert语句时,它是库中没有序列化DatetimeOffset的Gson,具体来说,这一行:
JsonObject json = mClient.getGsonBuilder().create().toJsonTree(item).getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)
当我替换DateTimeOffsetwith时Date,值被正确序列化.
所以,我的问题是:
Azure Functions抽象了大量依赖项,如队列库和Azure表.因此,从单元测试依赖模拟角度来看,编码工作量较少(因此维护较少).
假设我们使用Visual Studio 2015在本地开发
使用ASP.NET Identity 3.0的ASP.NET Core 5,我正在使用网页和apis.我正在使用OpenIddict发出JWT令牌并进行身份验证.我的代码看起来像这样:
X509Certificate2 c = new X509Certificate2(@"tokensign.p12", "MyCertificatePassword");
services.AddOpenIddict<WebUser, IdentityRole<int>, WebDbContext, int>()
.EnableTokenEndpoint("/api/customauth/login")
.AllowPasswordFlow()
.UseJsonWebTokens()
.AddSigningCertificate(c);
Run Code Online (Sandbox Code Playgroud)
如果我禁用UseJsonWebTokens(),我可以生成一个令牌并成功授权.但是,我不确定我的证书是否验证了返回的令牌.
当启用UseJsonWebTokens时,我能够在此终点发出JWT令牌.但是,我无法验证任何请求!
我在应用程序配置中使用以下代码:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
RequireHttpsMetadata = false,
Authority = "http://localhost:60000/",
Audience = "http://localhost:60000/",
});
app.UseOAuthValidation();
app.UseIdentity();
app.UseOpenIddict();
app.UseMvcWithDefaultRoute();
Run Code Online (Sandbox Code Playgroud)
我将 ASP.NET Core 与 OpenIddict、JWT、资源所有者授予和基于声明的角色一起使用。不执行任何策略的授权正在按预期进行。
我想对某些控制器和操作方法强制执行授权策略。我的所有用户都有角色声明,因此我在启动中执行了以下操作:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", p => p.RequireClaim("Admin");
});
Run Code Online (Sandbox Code Playgroud)
我对操作方法做了以下操作:
[Authorize("Admin")]
public async Task<string> Index()
{
return "Yes";
}
Run Code Online (Sandbox Code Playgroud)
没有“管理员”,我能够访问该资源,添加“管理员”后我不能。
我假设是因为我生成的 JWT 令牌没有用户声明。
将 ASP.NET Core 与 OpenIddict 密码授予结合使用。
当调用身份验证端点时,我得到以下信息:
{
"token_type": "Bearer",
"access_token": "eyJhbGciOiJ...",
"expires_in": 1800
}
Run Code Online (Sandbox Code Playgroud)
如何在响应中包含用户 ID?我可以在解码的令牌中看到它,但我的用户应用程序不会对其进行解码。
asp.net-core-mvc openid-connect aspnet-contrib asp.net-core openiddict
我希望我的域名类名称与我的数据库表名称相匹配(无复数形式)。
在EF Core 1.1中,我使用以下代码来做到这一点:
public static void RemovePluralisingTableNameConvention(this ModelBuilder modelBuilder)
{
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
entityType.Relational().TableName = entityType.DisplayName();
}
}
Run Code Online (Sandbox Code Playgroud)
在EF Core 2.0中,此代码无法编译,因为Relational()它不是IMutableEntityType上的方法。无论如何,在EF Core 2.0中,他们添加了IPluralizer,在此处记录:
没有太多示例可以显示如何实现与以前相同的行为。关于如何消除EF Core 2中的多元化的任何线索?
我正在从Visual Studio 2017和命令行使用NPM。
根据我的调查,NPM不会使用Windows身份验证来访问http://registry.npmjs.org/,因此npm被公司代理阻止。
为了解决问题,下面的解决方案可以使用,但带有安全漏洞:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://user:pass@ip:port
npm config set https-proxy http://user:pass@ip:port
npm config set proxy http://user:pass@ip:port
npm set strict-ssl false
Run Code Online (Sandbox Code Playgroud)
这会将密码存储在NPM配置中的BASE64编码文本中(不好!)
一种替代解决方案是始终为每个命令提供代理设置,以避免存储密码,但这仍然不理想,例如:
npm --without-ssl --insecure --proxy http://user:pass@ip:port install package-name
Run Code Online (Sandbox Code Playgroud)
我尝试过使用CNTLM来存储密码,该方法更安全,但是每次更新密码时都必须更新CNTLM,因此并不理想。
我们可以设置NPM来进行身份验证以像使用Kerberos或其他任何安全方法一样从VS或命令行进行凭据吗?
Visual Studio 2017-15.8.4(但在早期版本中会发生),Windows 7,IIS Express64。Chrome64(发布时最新)。
当我从Visual Studio中启动Chrome进行调试时,调试工作正常,直到我点击“选择文件”以浏览要上传的文件并选择文件(不上传,而只是选择它)。Visual Studio调试器将立即停止,而无需给出任何原因。
当使用IE的“浏览...”按钮并选择一个文件(等同于同一Chrome HTML元素)时,一切都按预期工作。
我的直觉是,Chrome浏览器正在尝试进行额外的套接字连接,这会打乱IIS Express并触发VS停止调试。
您知道在Chrome上保持调试按预期运行的任何解决方案吗?
带有 Azure AD B2C 的 ASP.NET Core 2.2 应用程序(使用 URL Endpoint v2.0):
我将我的核心应用程序配置如下 AppSettings.js:
"AzureAdB2C": {
"Instance": "https://login.microsoftonline.com/tfp",
"ClientId": "{ClientIdGuid}",
"Domain": "{Subdomain}.onmicrosoft.com",
"SignUpSignInPolicyId": "B2C_1_SignUpSignInDevelopment"
}
Run Code Online (Sandbox Code Playgroud)
启动:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddAuthentication(AzureADB2CDefaults.JwtBearerAuthenticationScheme)
.AddAzureADB2CBearer(o => Configuration.Bind("AzureAdB2C", o));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseAuthentication();
app.UseMvc(o=>{o.MapRoute(name:"d",template:"{controller}/{action=Index}/{id?}");});
}
Run Code Online (Sandbox Code Playgroud)
我的 Angular 7 客户端使用具有以下设置的 MSAL:
MsalModule.forRoot({
clientID: environment.azureB2CClientID,
authority: "https://" + environment.azureTenantIDSubdomain + ".b2clogin.com/tfp/" +
environment.azureTenantIDSubdomain + ".onmicrosoft.com/" +
environment.azureSignUpSignInPolicyId + "/v2.0",
redirectUri: environment.schemeAndAuthority + "/home",
validateAuthority: false,
cacheLocation : "localStorage", …Run Code Online (Sandbox Code Playgroud) openid-connect azure-ad-b2c azure-ad-msal asp.net-core-webapi angular
我正在使用Capabilities 3.5,CUDA 5和VS 2010(显然是Windows).
我有兴趣阅读已编译的代码,以更好地理解我的C代码更改的含义.
在离线尝试Azure移动应用程序时(在Visual Studio和使用SSL的本地IIS中),必须提供Azure的WEBSITE_AUTH_SIGNING_KEY的替代方案作为JWT令牌的SigningKey.
如何生成开发SigningKey?
asp.net-core ×3
jwt ×3
openiddict ×3
android ×1
angular ×1
azure ×1
azure-ad-b2c ×1
c# ×1
cuda ×1
gson ×1
iis-express ×1
java ×1
kerberos ×1
node.js ×1
npm ×1
proxy ×1
unit-testing ×1
xunit ×1