我已经为 OIDC 设置了一个注册应用程序,并将其配置为在 Azure AD 上用于各种用途。
我集成的应用程序preferred_username在 ID 令牌中用于各种用途。Azure ADusername@company.com向此字段分配 ,也称为 UPN。我希望它分配username哪个可能是旧的 SamAccountName 或以某种方式转换的 UPN。有什么办法可以做到这一点吗?
这对于 SAML 来说似乎是可能的(在我看来,NameId这在某种程度上相当于OIDC),但我找不到与 OIDC 相关的任何内容。https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-saml-claims-customization#editing-nameidpreferred_hostname
我尝试过通过一些有根据的猜测来更改应用程序中的清单文件,但没有成功实现这一点。我在清单文档中找不到任何相关内容。
由于迁移到 jersey 2,我需要从 guice 迁移到 HK2。我有一个针对我的一些依赖项的辅助注入方法,但我无法在 HK2 中实现它。看起来应该通过自定义注入解析器来解决,但我真的不知道如何解决。这些例子对我来说还不够清楚..
Guice 上的外观如下:
public interface MyFactory {
public MyClass createMyClass(@Assisted String dynamicParameter);
public HisClass createHisClass(@Assisted String dynamicParameter);
...
}
binder.install(new FactoryModuleBuilder().build(MyFactory.class));
public class MyClass {
...
@Inject
public MyClass(@Assisted String dynamicParameter, SomeService someOtherServiceInjectedAutomatically){
...
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在 HK2 上实施此操作?
我有这个使用 WMIC 获取 Windows 版本的代码段
(from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
select x.GetPropertyValue("Version")).FirstOrDefault().ToString();
Run Code Online (Sandbox Code Playgroud)
由于 WMI 现在被认为是遗留系统,并且System.Configuration 的 .NET Core 实现需要最新的 .NET Framework,因此似乎需要使用 MMI 检索此信息。
令人惊讶的是,每个需要 WMI 访问权限的 Windows 问题都有类似上面的代码片段。看起来 MMI 的采用率还没有那么高,而且要找到一个好的 MMI 示例并不容易。
我如何使用Microsoft.Management.Infrastructure来完成上面的代码?
我一直在应用程序周围使用 modelmapper 和 java 8Options,它们工作得很好,因为它们是原始类型;直到我将模型对象的字段之一更改为可选类型。然后一切都崩溃了。事实证明,许多库不能很好地处理泛型。
这是结构
public class MyObjectDto
{
private Optional<MySubObjectDto> mySubObject;
}
public MyObject
{
privae Optional<MySubjObject> mySubObject;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试映射MyObjectDto到时MyObject, modelmapper 调用
public void setMySubObject(Optional<MySubObject> mySubObject){
this.mySubObject = mySubObject;
}
Run Code Online (Sandbox Code Playgroud)
with Optional<MySubObjectDto>,我不明白这怎么可能(它们之间没有继承)。当然,崩溃得很快。现在我已经改变了我的设置器以接受 Dto 类型只是为了度过这一天,但这从长远来看是行不通的。有没有更好的方法来解决这个问题,或者我应该创建一个问题?
java ×2
.net-core ×1
azure ×1
c# ×1
hk2 ×1
java-8 ×1
jersey-2.0 ×1
modelmapper ×1
option-type ×1
windows ×1