小编Ada*_*dam的帖子

将DateTimeOffset从Android发送到.NET Web API

我正在使用适用于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,值被正确序列化.

所以,我的问题是:

  1. 我是否打算在Azure Mobile Apps中使用DateTimeOffset,如果是,那么使用它的正确方法是什么?
  2. 我可以强制Gson正确序列化DateTimeOffset吗?我查看了Gson Annotations,但没有什么可以帮助那里.我不确定我是否应该创建一个用于序列化和反序列化的getter和setter.

java android datetimeoffset gson azure-mobile-services

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

单元测试Azure功能和.csx文件

Azure Functions抽象了大量依赖项,如队列库和Azure表.因此,从单元测试依赖模拟角度来看,编码工作量较少(因此维护较少).

假设我们使用Visual Studio 2015在本地开发

  • 如何对单个Azure功能进行单元测试(对集成测试不感兴趣)?但是,最好在xUnit中,任何框架都可以.
  • 我如何在.csx文件中对一个函数进行单元测试?

unit-testing xunit azure visual-studio-2015 azure-functions

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

通过JWT Token授权

使用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)
  • 如何强制使用我的证书验证请求,以确保JWT令牌未被篡改.
  • 什么是允许验证和授权我的JWT令牌的正确设置,因为如果我不使用JWT,我将获得成功授权.

jwt openid-connect aspnet-contrib asp.net-core openiddict

5
推荐指数
1
解决办法
1859
查看次数

使用 OpenId Connect 进行基于声明的身份验证

我将 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 令牌没有用户声明。

  • 我的 JWT 是否应该包含用户角色声明才能使令牌发挥作用?
  • 如何使用 OpenIddict 发送角色声明?

jwt openid-connect aspnet-contrib asp.net-core openiddict

5
推荐指数
1
解决办法
1111
查看次数

OpenIddict 在令牌响应中获取用户 ID

将 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

5
推荐指数
1
解决办法
3978
查看次数

在EF Core 2中使用单表名称

我希望我的域名类名称与我的数据库表名称相匹配(无复数形式)。

在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,在此处记录:

https://github.com/aspnet/EntityFramework.Docs/blob/master/entity-framework/core/what-is-new/index.md#pluralization-hook-for-dbcontext-scaffolding

没有太多示例可以显示如何实现与以前相同的行为。关于如何消除EF Core 2中的多元化的任何线索?

c# ef-code-first entity-framework-core

5
推荐指数
4
解决办法
3483
查看次数

在不使用密码的情况下在代理后面访问Windows上的NPM

我正在从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或命令行进行凭据吗?

proxy kerberos node.js npm visual-studio-2017

5
推荐指数
0
解决办法
506
查看次数

在Chrome中选择“选择文件”时,Visual Studio将停止调试

Visual Studio 2017-15.8.4(但在早期版本中会发生),Windows 7,IIS Express64。Chrome64(发布时最新)。

当我从Visual Studio中启动Chrome进行调试时,调试工作正常,直到我点击“选择文件”以浏览要上传的文件并选择文件(不上传,而只是选择它)。Visual Studio调试器将立即停止,而无需给出任何原因。

当使用IE的“浏览...”按钮并选择一个文件(等同于同一Chrome HTML元素)时,一切都按预期工作。

我的直觉是,Chrome浏览器正在尝试进行额外的套接字连接,这会打乱IIS Express并触发VS停止调试。

您知道在Chrome上保持调试按预期运行的任何解决方案吗?

visual-studio-debugging iis-express visual-studio-2017

5
推荐指数
1
解决办法
204
查看次数

从 Angular 7 (MSAL) 调用 ASP.NET Core 2.2 时颁发者无效

带有 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

3
推荐指数
1
解决办法
3793
查看次数

我该如何阅读PTX?

我正在使用Capabilities 3.5,CUDA 5和VS 2010(显然是Windows).

我有兴趣阅读已编译的代码,以更好地理解我的C代码更改的含义.

  • 我需要在VS中使用什么配置来编译代码以便于阅读(将编译设置为足够的PTX?)?
  • 我需要使用什么工具对生成的PTX进行反向工程才能读取它?

cuda

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

Azure Mobile Apps离线WEBSITE_AUTH_SIGNING_KEY

在离线尝试Azure移动应用程序时(在Visual Studio和使用SSL的本地IIS中),必须提供Azure的WEBSITE_AUTH_SIGNING_KEY的替代方案作为JWT令牌的SigningKey.

如何生成开发SigningKey?

jwt azure-mobile-services asp.net-identity

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