Skip to content

Instantly share code, notes, and snippets.

@ahelland
ahelland / HRD_Internal.xml
Created April 25, 2019 19:42
B2C HRD_Internal
<UserJourney Id="HRD_Internal">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="pre-hrd" TechnicalProfileReferenceId="SelfAsserted-EmailCollect" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="HRD" TechnicalProfileReferenceId="HRD_Function" />
@ahelland
ahelland / B2C_1A_TrustFrameworkExtensions_Dev.xml
Created July 24, 2019 12:08
AppleID ClaimsProvider for Azure AD B2C
<ClaimsProvider>
<Domain>Apple</Domain>
<DisplayName>Apple</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="AppleID">
<DisplayName>Sign in with Apple</DisplayName>
<Protocol Name="OpenIdConnect" />
<Metadata>
<Item Key="client_id">%apple-client-id%</Item>
<Item Key="UsePolicyInRedirectUri">0</Item>
public static string BuildIdToken(string Subject)
{
string issuer = jwt.Issuer;
string audience = jwt.Audience;
IList<System.Security.Claims.Claim> claims = new List<System.Security.Claims.Claim>();
claims.Add(new System.Security.Claims.Claim("ver", jwt.Version, System.Security.Claims.ClaimValueTypes.String, issuer));
claims.Add(new System.Security.Claims.Claim("sub", Subject, System.Security.Claims.ClaimValueTypes.String, issuer));
claims.Add(new System.Security.Claims.Claim("iat", jwt.iat, System.Security.Claims.ClaimValueTypes.String, issuer));
claims.Add(new System.Security.Claims.Claim("name", jwt.name, System.Security.Claims.ClaimValueTypes.String, issuer));
@ahelland
ahelland / B2C_1A_Signin_With_Email.xml
Created February 26, 2020 21:43
AAD B2C Custom Policy for "Magic" SignIn Links
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
PolicySchemaVersion="0.3.0.0"
TenantId="yourtenant.onmicrosoft.com"
PolicyId="B2C_1A_signin_with_email"
PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signin_with_email">
@ahelland
ahelland / B2C_1A_Signup_Invitation.xml
Created February 26, 2020 21:48
Azure AD B2C Custom Policy for handling SignUp with id_token_hint
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
PolicySchemaVersion="0.3.0.0"
TenantId="yourtenant.onmicrosoft.com"
PolicyId="B2C_1A_signup_invitation"
PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_invitation">
@ahelland
ahelland / SendSignInLinkAsync.cs
Created February 27, 2020 00:07
Method for generating and mailing "magic links"
protected async Task SendSignInLinkAsync()
{
string email = mailer.to.Email;
string token = BuildIdToken(email);
string link = BuildUrl(token);
string htmlTemplate = System.IO.File.ReadAllText("SignInTemplate.html");
var apiKey = configuration.GetSection("MailerSettings")["SendGridApiKey"];
var client = new SendGridClient(apiKey);
var plainTextContent = "You should be seeing a SignIn link below.";
@ahelland
ahelland / monitoring-lb.yaml
Created July 6, 2021 19:32
Exposing Grafana, Prometheus and Jaeger through Load Balancers
apiVersion: v1
kind: Service
metadata:
namespace: monitoring
name: grafana
labels:
app.kubernetes.io/instance: grafana
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: grafana
app.kubernetes.io/version: 7.5.5