小编Sve*_*ach的帖子

在azure移动服务中创建引用其他实体的实体

我创建了一个天蓝色的移动服务,它基本上由2个实体和2个TableControllers组成.这两个实体都有1:1的关系.

public class Entity1 : EntityData
{
    public int Value { get; set; }
    public DateTime Date { get; set; }
    public string Name { get; set; }
    public virtual Entity2 Reference { get; set; }
}

public class Entity2 : EntityData
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器是标准的脚手架生成的控制器.当我尝试插入一个entity1实例并引用已经存在的entity2时,我得到以下消息:

{"$id":"1","message":"The operation failed due to a conflict: 'Violation of 
PRIMARY KEY constraint 'PK_Service.Entity2'. Cannot insert
duplicate key in object 'Service.Entity2'. The duplicate key
value is (32aec44a282e42b7bc51096052335dad).\r\nThe statement has …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework azure ef-code-first azure-mobile-services

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

使用ADAL.js获取令牌对Azure移动服务应用进行身份验证

我正在尝试针对Azure移动服务应用验证HTML应用.

安装程序

两个应用程序都使用AAD作为身份验证后端,因此两个应用程序都在Active Directory中注册了一个应用程序:

Azure移动服务应用:

HTML应用:

  • 在"对其他应用程序的权限"中,我添加了具有委派权限"访问权限"的Azure移动服务应用程序

Azure移动服务使用.NET后端,我在其中包含和配置了NuGet包"Microsoft Azure移动服务.NET后端安全扩展",如https://azure.microsoft.com/en-gb/documentation/articles/中所述.移动服务- DOTNET -后端窗口电话-GET-开始用户/

HTML应用程序使用ADAL.JS和Angular:

adalAuthenticationServiceProvider.init(
{
    // Config to specify endpoints and similar for your app
    clientId: "<html app aad client id>",
    redirectUri: "<html app redirect uri>",
    endpoints: {
        '<AMS app client id>': 'https://ampapp.azure-mobile.net/'
    }
},
$httpProvider
);
Run Code Online (Sandbox Code Playgroud)

此设置按预期工作,我打开我的HTML应用程序,对Azure AD进行身份验证,重定向到我的应用程序并且我已登录.此外,当我尝试访问我的Azure移动服务时,我看到Adal.js注入持有者令牌.

问题

Azure移动服务不接受承载令牌 - 我获得401未经授权.我不知道为什么,但Azure移动服务使用它自己的身份验证标头 - 但没关系.

MSDN为Azure移动服务定义了一个所谓的"客户端定向登录操作":

"通过使用已从身份提供商处获得的身份令牌,从Microsoft Azure Mobile Services请求身份验证令牌." (https://msdn.microsoft.com/en-us/library/azure/jj710106.aspx)

好的,所以我们这样做:

 // obtain token for Azure Mobile …
Run Code Online (Sandbox Code Playgroud)

c# mobile azure azure-mobile-services adal

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

Java 锁定机制中的 ConcurrentHashMap 用于computeIfPresent

我正在使用 Java 8 并想知道computeIfPresent操作是ConcurrentHashMap锁定整个表/地图还是仅锁定包含密钥的 bin。

从该方法的文档computeIfPresent

其他线程在此映射上尝试的一些更新操作可能会在计算过程中被阻塞,因此计算应该简短且简单,并且不得尝试更新此映射的任何其他映射

当为一个键调用这个方法时,这看起来整个地图都被锁定了。如果更新某个键的值,为什么必须锁定整个地图?锁定包含键/值对的 bin 不是更好吗?

java multithreading concurrenthashmap java.util.concurrent

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

具有 TokenEndpoint 基本身份验证的 ASP.NET Core OAuth

我正在尝试将 ASP.Net Core 2.2 与 OAuth 身份验证一起使用。要使用 OAuth,我使用Startup.cs 中的AddOAuth方法public void ConfigureServices(IServiceCollection services)

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = "Provider";
})            
.AddCookie()
.AddOAuth("Provider", options =>
{
    options.ClientId = Configuration["Provider:ClientId"];
    options.ClientSecret = Configuration["Provider:ClientSecret"];
    options.CallbackPath = new PathString("/callback");

    options.AuthorizationEndpoint = "https://api.provider.net/auth/code";
    options.TokenEndpoint = "https://api.provider.net/auth/token";
});
Run Code Online (Sandbox Code Playgroud)

问题是,当中间件尝试使用 获取授权代码时TokenEndpoint,我收到一个 HTTP 401,因为提供程序需要在此端点上有一个基本的身份验证标头。

我的问题是,如何告诉中间件向 TokenEndpoint 请求添加一个基本的 auth 标头?

c# oauth-2.0 asp.net-core

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