我花了最近几天阅读有关OAuth2和OpenIDConnect的所有规范,并使用Thinktecture Identity Server实现测试客户端.我也遵循了几个复数课程,我认为理解它的主要要点.但是我仍然对响应类型非常困惑.
OpenIDConnect规范指定混合流响应类型是"code","id_token"和"token"的组合.我理解"id_token"允许我们最初访问基本的id信息.
我也理解代码"是指授权代码,而"令牌"是指访问令牌,并将"代码"与其他两个触发器中的一个或两个相结合,但我的理解是你交换了访问令牌的授权代码授权流程,而隐式流程隐式提供访问代码?
有人能解决我的困惑吗?
突然之间,我的 react typescript 项目开始拒绝<span>标签
TS2339: Property <span> does not exist on type 'JSX.IntrinsicElements'
Run Code Online (Sandbox Code Playgroud)
每个其他标签都绝对没问题,但<span>我.tsx文件中的任何地方都会引发此错误。
任何人都可以建议吗?
我有开发人员一个由oAuth2和Azure B2C保护的API.我现在想要从使用Forms作为其身份验证机制的旧Web表单应用程序访问该API.
我已在客户端成功使用hellojs在单独的浏览器窗口中触发身份验证方法,然后成功使用访问令牌来调用我的API,但我如何从服务器端执行此操作?
我在设置oAuth2时看到的所有示例都涉及使用OWIN中间件保护API(例如使用Facebook登录等),但我需要保留现有的表单身份验证,只需调用调用API并处理访问代码的代码/令牌等
如果我需要后端系统代表用户发出请求,我是否应该在某处安全地存储访问令牌?
我们正在使用Azure B2C来验证我们的用户是否正常工作.注册后,我们向用户添加一些自定义声明,这些声明在B2C门户中使用图形api定义为"用户属性".当我登录门户网站时,我可以看到这些值已经被我们的调用设置,因为有一些标准的声明值(即我们还通过连接givenName和lastName值来设置显示名称).
我们遇到的问题是,在设置这些值之后,它们不会出现在通过将访问令牌发送到身份验证端点而检索到的令牌中,直到用户注销并再次返回(这显然是一个非常糟糕的用户体验之后)注册).看起来在创建用户时会缓存原始id_token,而这正是返回的内容.
这没有意义,因为让用户在登录应用程序时更新其配置文件(声明值)并且这些更改立即生效而无需重新进行身份验证似乎是完全合理的?
有人可以解释如何/是否有可能强制服务器上的缓存id_token过期,以便当我们使用访问令牌请求id_token时,id_token包含最新的声明值?
我尝试在完全更新的 Windows Server 2022 Core 安装上将 Visual Studio 2022 构建工具安装为 ESXi 上的虚拟机。每当我开始安装时,我都会看到 GUI 在提取文件时出现,然后崩溃并留下事件日志条目:
Application: vs_setup_bootstrapper.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NotImplementedException
at MS.Win32.UnsafeNativeMethods+ITfThreadMgr.CreateDocumentMgr(ITfDocumentMgr ByRef)
at System.Windows.Input.TextServicesContext.RegisterTextStore(System.Windows.Input.DefaultTextStore)
at System.Windows.Input.DefaultTextStore.get_Current()
at System.Windows.Input.TextServicesContext.SetFocusOnDefaultTextStore()
at System.Windows.Input.InputMethod.EnableOrDisableInputMethod(Boolean)
at System.Windows.Input.TextServicesManager.Focus(System.Windows.DependencyObject)
at System.Windows.Input.KeyboardDevice.ChangeFocus(System.Windows.DependencyObject, Int32)
at System.Windows.Input.KeyboardDevice.TryChangeFocus(System.Windows.DependencyObject, System.Windows.Input.IKeyboardInputProvider, Boolean, Boolean, Boolean)
at System.Windows.Input.KeyboardDevice.Focus(System.Windows.DependencyObject, Boolean, Boolean, Boolean)
at System.Windows.Input.KeyboardDevice.Focus(System.Windows.IInputElement)
Run Code Online (Sandbox Code Playgroud)
我还尝试手动提取文件并运行,但使用本指南会发生同样的事情,因为安装程序本身正在崩溃:
https://silentinstallhq.com/visual-studio-build-tools-2022-silent-install-how-to-guide/
谁能告诉我为什么失败?
我正在使用AutoFixture AutoMoqCustomization并尝试创建一个包含readonly属性的类的实例,因此:
public override ILog Logger { get; } = LogManager.GetLogger(typeof(MyService));
Run Code Online (Sandbox Code Playgroud)
这个想法是我应该能够ILog使用以下方法冻结我的测试测试:
var log = fixture.Freeze<Mock<ILog>>;
Run Code Online (Sandbox Code Playgroud)
并验证它在主方法调用之后被调用:
log.Verify(l => l.Warn, Times.Once);
Run Code Online (Sandbox Code Playgroud)
但是,当我调用fixture.Create<MyService>AutoFixture时,不会Logger使用模拟替换属性ILog.我也试图消除默认值LogManager.GetLogger<etc>在这种情况下的价值ILog是null.
其他属性正确填充测试双精度但不是这一个.
作为参考,该ILog接口来自ServiceStack的日志框架,如下所示:
public interface ILog
{
bool IsDebugEnabled { get; }
void Debug(object message);
void Debug(object message, Exception exception);
void DebugFormat(string format, params object[] args);
void Error(object message);
void Error(object message, Exception exception);
void ErrorFormat(string format, params object[] args);
void Fatal(object …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用实体框架从表中执行Lambda Select到新模型,但我需要能够调用异步方法来填充返回集中每个实例上的属性:
await Task.WhenAll(_context.UserContacts.Where(uc => uc.UserId == user.Id).Select(async uc => new MailContact
{
Email = uc.Contact.Email,
UserId = uc.Contact.UserId,
ContactId = uc.Contact.Id,
Name = uc.Contact.UserId != null ? await _graphService.GetUserByIdAsync(uc.Contact.UserId) : null;
}
Run Code Online (Sandbox Code Playgroud)
我知道Linq对await/async的支持有限,我在StackOverflow上看了几个其他的例子,其中异步部分被移动到一个单独的循环中,例如:
T[] data = await Task.WhenAll(contacts.Select(c => LoadDataAsync(c)));
Run Code Online (Sandbox Code Playgroud)
但是,这种方法不会让我更新被称为"c"的对象,除非我通过引用传递异步方法不允许的引用.
有人可以解释正确填充名称属性的最有效方法吗?
azure-ad-b2c ×2
c# ×2
oauth-2.0 ×2
asp.net ×1
async-await ×1
autofixture ×1
automoq ×1
azure ×1
build-tools ×1
lambda ×1
middleware ×1
moq ×1
reactjs ×1
typescript ×1