我开始使用 Azure Keyvault 为我的应用程序存储私钥。
我有一个用例,我需要使用 RSA 私钥对 JWT 令牌进行签名。
当我的应用程序内存中有私钥时,这很容易,我会这样做
var token = new JwtSecurityToken(
issuer,
...,
claims,
...,
...,
signingCredentials_PrivateKey);
Run Code Online (Sandbox Code Playgroud)
既然开始使用Azure Keyvault,我想看看是否可以通过该KeyVaultClient.SignAsync方法对JWT令牌进行签名。
类似的东西
KeyVaultClient client = ...;
var token = new JwtSecurityToken(
issuer,
...,
claims,
...,
...);
var tokenString = client.SignAsync(myKeyIdentifier, token);
Run Code Online (Sandbox Code Playgroud) 我已通过此示例实施了邀请策略(通过向用户发送电子邮件链接来邀请用户访问该站点)https://github.com/azure-ad-b2c/samples/tree/master/policies/invite
我有这个用户旅程
<UserJourney Id="SignUpInvitation">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Unsolicited" TechnicalProfileReferenceId="SelfAsserted-Unsolicited"/>
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSignUpWithReadOnlyEmail" TechnicalProfileReferenceId="LocalAccountSignUpWithReadOnlyEmail"/>
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="4" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer"/>
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb"/>
</UserJourney>
Run Code Online (Sandbox Code Playgroud)
在第一步中,我从 JWT 中提取声明。一封电子邮件和一份自定义声明,
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="METADATA">https://mywebsite.com/internal/v1/invitation/.well-known/openid-configuration</Item>
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="extension_DBId" …Run Code Online (Sandbox Code Playgroud) azure azure-active-directory azure-ad-b2c identity-experience-framework
我刚刚下载了.NET Core 3.0.100的发行版本。
它与旧版本一起安装:
当我尝试运行dotnet restore针对.NET Core 3(<TargetFramework>netcoreapp3.0</TargetFramework>)的项目时,出现此错误
C:\Program Files\dotnet\sdk\2.2.202\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.0. Either target .NET Core 2.2 or lower, or use a version of the .NET SDK that supports .NET Core 3.0.
Run Code Online (Sandbox Code Playgroud)
我有一个global.json文件,该文件明确指出我需要3.0.100SDK
{
"sdk": {
"version": "3.0.100"
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以编辑MSBuildSDKsPathenv变量以指向3.0.100SDK,并且它可以工作,但是我不想这样做,因为我的计算机上还有其他项目仍需要使用旧版本的.NET Core。
有没有一种方法可以使该dotnet工具使用所述的SDK global.json而不是其中的SDK MSBuildSDKsPath?
编辑:我使用Visual Studio代码
.net-core ×2
azure ×2
.net ×1
asp.net-core ×1
azure-ad-b2c ×1
c# ×1
identity-experience-framework ×1
msbuild ×1