小编pre*_*elb的帖子

Azure AD 身份验证 401 错误“受众无效” AddAzureADBearer .Net Core Web Api

我正在尝试使用此示例创建一个简单的 Azure AD 身份验证示例,但我的客户端是 JQuery。我不知道为什么当令牌显示观众是https://myportal.onmicrosoft.com/test_core_web_api_spa. 这与 Azure 中的 API 定义相匹配。唯一缺少的部分是自定义范围,user_impersonation但是当我使用 MSALclientApplication.acquireTokenSilent(tokenRequest2)进行调用以获取令牌时,我的范围与具有范围的 API 的完整 URL 匹配:

const tokenRequest2 = {
    scopes: ["https://myportal.onmicrosoft.com/test_core_web_api_spa/user_impersonation"]
};
Run Code Online (Sandbox Code Playgroud)

在建立身份验证的 API 中,我正在使用此代码(我注意到使用此方法的示例并不多)

services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
   .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
Run Code Online (Sandbox Code Playgroud)

API的配置是

  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "myportal.onmicrosoft.com",
    "TenantId": "my-tenant-guid",
    "ClientId": "my-api-client-guid"
  },
Run Code Online (Sandbox Code Playgroud)

我注意到许多示例显示了不同的 API 格式(我假设这些是旧版本),但公开的 API 范围在 Azure 中列为https://myportal.onmicrosoft.com/test_core_web_api_spa/user_impersonation. 我还使用 Azure 仪表板添加了客户端的 guid 以访问此公开的 API 范围。

我哪里出错了?或者,是否有使用 MSAL、JQuery 客户端和一个简单的 .Net Core Web Api 的简单示例?似乎我发现的所有示例都已过时,或者使用不同的客户端或不同的身份验证方法。

更新以显示 Azure 中用于 Web …

authentication jquery azure-active-directory azure-ad-msal asp.net-core-webapi

11
推荐指数
2
解决办法
7253
查看次数

如何在本地测试 Azure Active Directory(回复 URL)

我已将测试 .NET Web Api 提升到 Azure 应用程序服务,并在 Azure Active Directory 下包含应用程序注册。然后我去本地做了一些测试,发现Azure希望在登录后在应用程序注册中使用回复URL。应用程序注册中的回复 URL 是应用程序服务的 URL。我的本地实例类似于https://localhost:44377/。在初始部署到 Azure 后,您应该如何在本地测试更改?我能想到的就是创建另一个应用程序注册进行测试,使用我的本地主机回复 URL,然后更新我的 web.config 以指向该开发应用程序注册。然后在再次发布之前,将 web.config 更新回其他应用程序注册。

下面是我用于身份验证的代码,它基于一个简单的 MVC 项目的标准模板。应用程序注册值用于重定向 URL,但也许我应该在测试时覆盖下面的这些值?

      public class AccountController : Controller
{
    public void SignIn()
    {
        // Send an OpenID Connect sign-in request.
        if (!Request.IsAuthenticated)
        {
            HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);
        }
    }
Run Code Online (Sandbox Code Playgroud)

asp.net azure azure-active-directory azure-web-app-service

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

如何在 Cosmos DB 容器上显示唯一键?

此链接意味着通过查看设置可以在 Cosmos DB 容器中看到唯一键。但是,我似乎无法同时使用门户和存储资源管理器找到它们。如何查看现有 Cosmos DB 容器上的唯一键?我有一个文档由于密钥冲突而无法加载,这应该是不可能的,所以我需要确认密钥是什么。

azure azure-cosmosdb

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

Razor 页面模型绑定错误上的 SelectList

我正在尝试按照此处的示例代码进行操作,但我一定遗漏了一些明显的内容。我没有从数据源中读取我的选择列表选项,而是尝试在构造函数中加载它们。但我不断收到错误消息。

InvalidOperationException: Could not create an instance of type 'Microsoft.AspNetCore.Mvc.Rendering.SelectList'. Model bound complex types must not be abstract, or value types and must have a parameterless constructor. Alternatively, set the 'SearchOptions' property to a non-null value.
Run Code Online (Sandbox Code Playgroud)

这是CS代码:

public class TestSelectModel : PageModel
{
    private List<SelectListItem> _searchoptions;
    [BindProperty(SupportsGet = true)]
    public SelectList SearchOptions { get; set; }
    public TestSelectModel()
    {
        _searchoptions = new List<SelectListItem>();
        _searchoptions.Add(new SelectListItem("By Email", "By Email", true));
        _searchoptions.Add(new SelectListItem("By Request Name", "By Request Name", false));
    } …
Run Code Online (Sandbox Code Playgroud)

c# razor-pages

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

将 json 数组读入 SQL Server 中的行

给定下面的示例 json 数据,我如何编写查询以一步提取所有数组数据?我的目标是 ActionRecs 数组 (4) 中的每个项目都有一行。我的实际 json 更复杂,但我认为这为我的目标提供了一个很好的例子。

declare @json2 nvarchar(max)
set @json2 = '{
    "RequestId": "1",
    "ActionRecs": [
        {
            "Type": "Submit",
            "Employee": "Joe"
        },
        {
            "Type": "Review",
            "Employee": "Betty"
        },
        {
            "Type": "Approve",
            "Employee": "Sam"
        },
        {
            "Type": "Approve",
            "Employee": "Bill"
        }
    ]
}'

SELECT x.*
, JSON_QUERY(@json2, '$.ActionRecs') as ActionArray
from OPENJSON(@json2) 
with (Id varchar(5) '$.RequestId') as x
Run Code Online (Sandbox Code Playgroud)

查询结果

sql-server json json-query

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

从 SharePoint 下载 MS Graph API 文件

我正在尝试使用 Graph API 从表单库下载 XML 文件,但它不起作用。我在这里引用文档,我认为它告诉我正确的语法是GET /sites/{siteId}/drive/items/{item-id}/content。但是,当我使用 Graph Explorer 使用该语法时,它会显示 404 File Not Found。接下来,我尝试了该语法GET /drives/{drive-id}/items/{item-id}/content,该语法返回状态代码 0,但消息正文仅显示 {"isTrusted": true}。我应该注意,如果我删除 URL 上的最后一个参数并使用GET /drives/{drive-id}/items/{item-id}它的语法,确实会带回有关文件的信息。

语法有问题吗?这也许不是您可以对表单库中的 XML 文件执行的操作吗?这可能是 Graph Explorer 的限制吗?

sharepoint microsoft-graph-api

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

通用存储库模式和多个选择

我正在尝试学习存储库模式并查看通用存储库,我无法看到如何处理自定义的select语句.例如,使用本文,作者使用select by ID和select all.

public interface IGenericRepository<T> where T:class
{    
    IEnumerable<T> SelectAll();
    T SelectByID(object id);
    void Insert(T obj);    
    void Update(T obj);    
    void Delete(object id);    
    void Save();
}
Run Code Online (Sandbox Code Playgroud)

后来文章使用Northwind实现了IGenericRepository接口.然后,它用于创建Customer控制器.

public class CustomerController : Controller
{    
    private IGenericRepository<Customer> repository = null; 
    public CustomerController()    
    {        
        this.repository = new GenericRepository<Customer>();    
    }
    ...
Run Code Online (Sandbox Code Playgroud)

这将处理按ID选择所有客户或一个客户的列表,但是我遇到的是一些更真实的例子,例如"为客户选择所有客户"或"选择区域的所有客户".另外,您可以使用另一个基于不同实体的控制器来过滤不同的属性.我想我错过了一些基本的东西.如果用户界面需要通过各种过滤器呈现Customer实体(或任何其他实体),那么如何通过坚持使用一个通用存储库来实现?

generics asp.net-mvc entity-framework repository-pattern

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