Code Monkey home page Code Monkey logo

vettvangur.icelandauth's People

Contributors

dependabot[bot] avatar gardarthorsteins avatar gislisig avatar gunnim avatar hedinne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vettvangur.icelandauth's Issues

Helper for Url generation

We are missing an url generator, it should take into account authid if configured, and constrain the displayed authentication options as well if any have been configured.

  • AuthID docs - Suggest usage as an alternative to cookies or seperate id's to control user destination.

  • Parse Authentication if any and apply as qaa queryString param in url generation

  • Require configuration of island.is contract ID for use in url generation

  • Url helper

The .NET 5 solution doesn't work on all platforms

I'm working on my own Iceland Auth solution for my service based on the .NET 5 code in this NuGet package. However, I noticed a strange error when I was running it on Linux but it was running fine on Windows.

Here's the error I encountered when running it on Linux:

Unhandled exception. System.Security.Cryptography.CryptographicException: ASN1 corrupted data.
 ---> System.Formats.Asn1.AsnContentException: The provided data is tagged with 'Application' class value '13', but it should have been 'Universal' class value '16'.

After some Googling I found a related issue here:
dotnet/runtime#47005

The problem is that Linux & MacOS aren't base64 decoding the string for us, like Windows is doing. So here's a fix that I did:

Store the certificates as string:

public static readonly string AudkennisrotString = @"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";
public static readonly string TraustAudkenniString = @"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";
public static readonly string TrausturBunadurString = @"MIIFpTCCA42gAwIBAgIBBjANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQGEwJJUzETMBEGA1UEBRMKNTIxMDAwMjc5MDEWMBQGA1UEChMNQXVka2VubmkgZWhmLjEWMBQGA1UECxMNTWlsbGlza2lscmlraTEYMBYGA1UEAxMPVHJhdXN0IGF1ZGtlbm5pMB4XDTEwMTIyMTE5MTgyOFoXDTQwMTIyMTE5MTgyOFowgZIxCzAJBgNVBAYTAklTMRMwEQYDVQQFEwo1MjEwMDAyNzkwMRYwFAYDVQQKEw1BdWRrZW5uaSBlaGYuMSMwIQYDVQQLExpVdGdlZmFuZGkgYnVuYWRhcnNraWxyaWtqYTEWMBQGA1UECxMNTWlsbGlza2lscmlraTEZMBcGA1UEAxMQVHJhdXN0dXIgYnVuYWR1cjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM99wQrQhE7e/WdItOxizF8qwqabC3Dq7aDz5MEG+r7PQSJ0KOWqa5IRfHT4Z46qOOTfF5wfpCiYIcRGAgre0h/JJtiDYj9S3cKFdwAMhWt5nbRwoTcHzuJSu+S7EcaOPZsV8yP2I11WbE52woxOtXc/Yrkt35asUj/kBeU+VkGahDpjgOXivy/6SPDx14U0eT7aAhz6TPP6JH8LwbOr9lgXtYC0qaoUifIXskG0gBKT94rNhy0fRw7Zis+0bep9Og+IE2djRfJYJ4Sox9QevknZZSfVAfbHrE8lKGWQ5eu9sS9gtUELYXJzOT8Zbt9PssOp2JVQXH42vSXUqPyAfZECAwEAAaOCASkwggElMBIGA1UdEwEB/wQIMAYBAf8CAQAwfAYDVR0gBHUwczBxBglggmABAgEBAwEwZDAtBggrBgEFBQcCAjAhGh9JbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgUG9saWN5MDMGCCsGAQUFBwIBFidodHRwOi8vY3AuYXVka2VubmkuaXMvdHJhdXN0YXVka2VubmkvY3AwDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFNtGy/wv7H0C0u8Yie+S5gAEXezcMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHA6Ly9jcmwuYXVka2VubmkuaXMvdHJhdXN0YXVka2VubmkvbGF0ZXN0LmNybDAdBgNVHQ4EFgQUb+zbESwBA2sbYK62+GjZQAHNjjgwDQYJKoZIhvcNAQEFBQADggIBAC36NfILyxD5oTnh2d7ZHFSf+r0XJg58RpYSMb0nqRDNqvYOPcoCjhI0/oq5WLavJtsc6wwfdRNt2w62aVPO8sOR3vauGm7xbSWopvFsjvklLEcjEdjUG4wesFlYeEZekB8MRiL5LOxkjUS7cdH1ZyIa3tEvHCJzScPQWkkWPopxj0Gw5VX3qVWDXQd0SEV0ubAc4Asfpie6AUOpZ6B2qTOh2l4LW7rS58+7Sx+ioFN8G2CjADlRBS69UBZZDr24Pk2PQk/6is2t9IbZTcI3ucvpHuKg1vcjIP24B8QcRZneUsKk0ec6vhCvUZ8qfD519wkyZ7U0LxL8/R3dvYcSndTTRPoThb4LjABfrCXuc2NuaL7j1Tow9jsNyg7WrK0KvQdBLH8xRtPLsuV+J2muL6vxF4P6KbbxydMP+H6LQ47z7fTIk/Y8qQmev/I07RFMLUDqFDUTJFPf2YBScCZu/Dhsi+rH8QNuGuVYY5qU/57Ji9Domy5LfYb2i6asRWwIeLBHgeZ6Olv8qSc3yfYx1DfYFQ/f/hD92KENm0wNtUghzdQGZfoXGpnKYsYfrKu3mZTnzPNC1NSRFCOhKWYEog40FZ/IxKfz5exLg3SbXDzv5UHUq78wAmU83rN4bf+7GcbVtPCJv8n9NVDUdisJqLb0zmbmN652nJj7oR0Bua1A";

And to load the certificates with Convert.FromBase64String

X509Certificate2 Audkennisrot = new X509Certificate2(Convert.FromBase64String(AudkennisrotString));
X509Certificate2 TrausturBunadur = new X509Certificate2(Convert.FromBase64String(TrausturBunadurString));
X509Certificate2 TraustAudkenni = new X509Certificate2(Convert.FromBase64String(TraustAudkenniString));

And one more thing, replace

byte[] certData = Encoding.UTF8.GetBytes(certText);

with:

byte[] certData = Convert.FromBase64String(certText);

After those changes, the .NET 5 solution should be compatible on all platforms. Hope this helps and thank you Vettvangur for getting me started with your code!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.