小编use*_*413的帖子

将Azure AD身份验证与asp.net核心身份个人帐户集成在一起

我要解决的场景如下。

1)用户可以使用标准方法针对我的本地数据库进行身份验证-可以正常工作

2)用户可以通过社交媒体平台进行身份验证-工作正常

3)现在,我希望具有Azure AD帐户的某些用户能够拥有本地帐户BUT,并通过其Azure AD进行身份验证。有(1)和(2)的解决方案。但是我找不到能同时支持这三个方面的解决方案。最接近的是多租户SaaS身份验证

对于那些应该通过AD进行身份验证的用户,将在系统中对其进行预配置。(我将在我的本地数据库中拥有他们的TenantID,ClientID等)。因此,根据他们的用户名,如果我可以重定向到相关的登录页面,则我应该能够支持其他广告。

我不确定如何正确连接(或者这种方法是否错误/可行)。

authentication asp.net-identity azure-active-directory asp.net-core-2.0

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

尝试访问 azure 工件时,.Net 6 docker 构建失败,并显示“错误 NU1301:无法加载源的服务索引”

请注意,我尝试使用 docker 桌面在本地构建此文件,而不是在 Azure CI/CD 管道中构建。

我已经使用https://github.com/microsoft/artifacts-credprovider开始了这个过程,但这也不起作用,后来发现新的 dotnet 恢复可以完成它的工作。因此,参考https://github.com/microsoft/artifacts-credprovider/issues/220后尝试了以下方法

以下是我尝试过的步骤。

我已经生成了 PAT。

下面是我的 docker 文件。

WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyProj.csproj", "."]

COPY . .
WORKDIR "/src/."

ARG PAT
ARG FEED_URL

ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
RUN dotnet nuget add source "${FEED_URL}" -u "noneed" -p "${PAT}" --store-password-in-clear-    text --valid-authentication-types basic

RUN dotnet restore "./MyProj.csproj"

RUN dotnet build "MyProj.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProj.csproj" -c …
Run Code Online (Sandbox Code Playgroud)

docker-build .net-6.0

6
推荐指数
0
解决办法
3876
查看次数

PHPUnit和Selenium2如果一个案例失败,所有案例都会失败

我正在使用PHPUnit和Selenium2服务器.我正在使用PageObject模式.对于页面对象,我获得了webdriver的实例并执行必要的功能.

为了保持单个浏览器运行,我实现了一个粗略的解决方案,我在网络中找到了我在静态类中初始化驱动程序:

class SessionHelper {
    public static $first;
}
SessionHelper::$first = 0;
Run Code Online (Sandbox Code Playgroud)

然后在我的测试用例类setup()方法中;

public function setUp(){
    if (SessionHelper::$first == 0 )
    {
        $this->setHost('localhost');
        $this->setPort((int)4444);            
        $this->setBrowser('firefox');        
        $this->setBrowserUrl('http://domain.com/lucky/web');            
        $this->shareSession(TRUE);
        $this->prepareSession();
        SessionHelper::$first = 1 ;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以在一个浏览器中执行所有测试.但是,如果一个测试用例失败; 通过尝试查找不存在的元素,所有其他测试用例都失败并显示消息"Undefined index:browserUrl".如果我更改它以在页面中查找已知元素,它可以正常工作.所以例如;

test_method_1:如果在此测试失败后未找到任何元素,则显示"Undefined index:browserUrl".

如果test_method_1正常,则其他测试将执行,直到另一个测试用例失败.

那么,我可能会得到这个错误的原因是什么?当一个测试用例失败时,我的会话会被销毁吗?

php phpunit selenium-webdriver

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

将[(ngModel)]与数据库中的可为空类型一起使用

我的应用程序具有可为空的数据字段。例如,两个日期字段PublishOn和ExpiresOn。它们都可以为null或具有有效日期。

在客户端,我有一个带有匹配字段的对象,该字段填充了来自Web API的数据。但是当我绑定数据如下

<input class="form-control" type="text" name="Title" [(ngModel)] = "entity.PublishOn">
Run Code Online (Sandbox Code Playgroud)

当PublishOn属性具有值时,它可以正常工作。如果为null,则失败。我知道我可以在获取数据后将任何null值转换为空字符串或其他内容,但是想知道为什么Angular在这种情况下不灵活吗?我的意思是,如果存在绑定的值,并且其为空/空值,则照原样保留。

Angular处理这种情况的方法是什么?

更新-1

我跟踪了ValueAccessor示例; 这里这里

但是,每次运行时,都会给我一个例外:“有多个自定义值访问器与具有未指定名称属性的表单控件匹配”,我有一个简单的要求。那是在控制它的绑定值之前,应该检查是否为空。如果为null,则应返回一个空字符串!

angular

5
推荐指数
2
解决办法
3136
查看次数

AADSTS70001:在目录中找不到具有标识符'guid'的应用程序

Azure AD身份验证通过Visual Studio在本地运行良好.出版后; 我转到URL(https://mydomain.azurewebsites.net/),它被重定向到登录页面.此时地址栏的数据低于数据(注意:某些敏感数据已被删除).

https://login.microsoftonline.com/guid/oauth2/authorize?response_type=code id_token&redirect_uri = https://mydomain.azurewebsites.net/.auth/login/aad/callback&client_id = myclientid&scope = openid profile email&response_mode = form_post&nonce = noncevalue&状态=导向=%2F

现在有两个问题与上面的数据

第一个问题,这里提到的client_id = myclientid不再存在,我已将其从目录中删除.我为这个客户端ID搜索我的代码(find-in-file),以确保我没有错误地引用它.我在代码中找不到引用.

然后我复制了正确的client_id,替换为上面的url并重试.此时它让我登录并显示错误的请求消息.

第二个问题重定向网址https://mydomain.azurewebsites.net/.auth/login/aad/callback不是我配置的!!!(我把它设置为https://mydomain.azurewebsites.net)Azure有附加.auth/login/aad/callback部分

这肯定是一个配置问题.

以前有人遇到过这种问题吗?

asp.net-mvc azure-web-sites azure-active-directory

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

InvalidOperationException:检测到“Microsoft.AspNetCore.Identity.UserManager”类型的服务存在循环依赖

这是在我根据这篇文章定制了asp.net核心身份服务以支持多租户之后发生的。我简化了它以满足我的需求。

这是我的基本设置。

1) 自定义应用用户

public class ApplicationUser : IdentityUser<int>, IEntityBase{}
Run Code Online (Sandbox Code Playgroud)

2) 自定义角色

public class ApplicationRole : IdentityRole<int>, IEntityBase{}
Run Code Online (Sandbox Code Playgroud)

3) 自定义角色存储

public class RoleStoreMultiTenant<TRole> : RoleStore<TRole, ApplicationDbContext, int>{}
Run Code Online (Sandbox Code Playgroud)

4) 自定义用户存储

public class UserStoreMultiTenant<TUser, TRole, TKey> : UserStore<TUser, TRole, ApplicationDbContext, int>{}
Run Code Online (Sandbox Code Playgroud)

5)我的角色服务从上面(3)继承。这只是为了将我的代码与 RoleStore 覆盖的代码分开。

public class ApplicationRoleStore : RoleStoreMultiTenant<ApplicationRole>{}
Run Code Online (Sandbox Code Playgroud)

6)从上面(4)继承的我的用户服务。这只是为了将我的代码与 UserStore 覆盖的代码分开。

public class ApplicationUserStore : UserStoreMultiTenant<ApplicationUser, ApplicationRole, int>{}
Run Code Online (Sandbox Code Playgroud)

7) 我的 ApplicationDbContext 是;

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>{}
Run Code Online (Sandbox Code Playgroud)

8) 我与身份相关的启动配置(在 ConfigureServices 中)。

services.AddScoped<IRoleStore<ApplicationRole>, ApplicationRoleStore>();
services.AddScoped<IUserStore<ApplicationUser>, ApplicationUserStore>();
services.AddIdentity<ApplicationUser, ApplicationRole>(o …
Run Code Online (Sandbox Code Playgroud)

dependency-injection asp.net-core-mvc asp.net-identity-3

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