小编Tam*_*fai的帖子

如何进行应用程序到应用程序(服务器到服务器)身份验证,OAuth 2.0,Web API 2.0

我在一个有2个单独的ASP.NET MVC 5应用程序的项目中。一个将另一个用作服务。基本上,应用程序之一是配置文件服务,它具有用户的所有配置文件信息,以便将来其他应用程序可以使用该服务,而用户不必设置多个帐户。这些应用程序是组织内部的。对于身份验证和授权,我们使用Windows身份验证和智能卡。配置文件服务应用程序使用Web API 2.0。我尚未设置OAuth 2.0。

问题:就目前而言,任何知道如何向配置文件服务发送请求的人都可以这样做(例如,输入带有查询字符串的url)。

我想要实现的目标:我想授权我的其他应用程序(目前,仅此一个……将来,还有更多)。我不希望请求基于使用该应用程序的用户的授权,而是基于应用程序本身。换句话说,如果对配置文件服务的请求来自该应用程序,无论谁登录并使用它,则配置文件服务会将其视为授权请求...如果来自其他任何地方,则将被拒绝。

我已经做了一些研究。我找不到任何明确说明如何进行设置的内容。我发现了一些有关如何使您的应用程序专门获得Google Services或Twitter服务授权的东西...告诉我如何设置客户端应用程序,而不是服务器应用程序(但是即使我不确定客户端设置,我也不确定)满足我的特定需求,因为它是内部应用程序,因为我不知道Google服务的工作方式等)。似乎可以使用OAuth 2.0和令牌,但是如何实现呢?我需要非常具体的分步解答(希望有一些代码)。

提前非常感谢您。我将经常检查。让我知道您是否需要更多信息。

编辑:哦!我忘了提!我们使用的是HTTPS,而不是HTTP ...这有什么关系吗?

c# asp.net-mvc restful-authentication oauth-2.0 asp.net-web-api2

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

EF Core 查询仅DateTime 的DateTimeOffset 无法翻译;

我遇到一个问题,我想仅根据 DateTimeOffset SQL Server 列的 DateTime 进行查询,我想知道是否可以使用 EF Core 进行查询。

如果我在世界各地都有约会,并且我的业务逻辑将它们准确地记录在本地 DateTimeOffset 中,那么我希望能够获得特定日期的约会,而不管时区如何,但是,我得到一个例外,即查询不能当我尝试以下操作时翻译:

public class Appointment
{
   public int Id {get;set;}
   public DateTimeOffset BeginTime {get;set;}
}

DateTime queryDay = new DateTime(2021, 1, 1);

var results = dbContext.Appointments.Where(a => a.BeginTime.DateTime >= queryDate && a.BeginTime.DateTime < queryDay.AddDays(1)).ToList();
Run Code Online (Sandbox Code Playgroud)

有没有办法用 EF Core 来做到这一点?我的意思是,在示例中,我只是想获取一个特定的日期,但实际上,我希望能够针对具有任何时间值的任何日期时间执行此操作。

换句话说,我不想按通用时间范围进行过滤,而是按不考虑偏移的时间范围进行过滤。

即使我创建返回 BeginTime.DateTime 的 [NotMapped] 属性,似乎也不起作用。

编辑:

确切的错误:

System.InvalidOperationException:无法翻译 LINQ 表达式 'DbSet() .Where(t => True && t.BeginTime.DateTime >= __fakeStartDate_1 && t.BeginTime.DateTime < __fakeEndDate_2)'。以可翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端计算。有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038 。

linq sql-server entity-framework-core ef-core-5.0

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