vettvangur / vettvangur.icelandauth Goto Github PK
View Code? Open in Web Editor NEWEnables easy integration with the island.is authentication service
Home Page: https://icelandauth.vettvangur.is
License: MIT License
Enables easy integration with the island.is authentication service
Home Page: https://icelandauth.vettvangur.is
License: MIT License
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
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 = @"MIIGdzCCBF+gAwIBAgIBBjANBgkqhkiG9w0BAQUFADBpMQswCQYDVQQGEwJJUzETMBEGA1UEBRMKNTIxMDAwMjc5MDEWMBQGA1UEChMNQXVka2VubmkgZWhmLjEWMBQGA1UECxMNUm90YXJza2lscmlraTEVMBMGA1UEAxMMQXVka2Vubmlzcm90MB4XDTEwMTIyMTE0MTQwNloXDTQ1MTIyMTE0MTQwNlowbDELMAkGA1UEBhMCSVMxEzARBgNVBAUTCjUyMTAwMDI3OTAxFjAUBgNVBAoTDUF1ZGtlbm5pIGVoZi4xFjAUBgNVBAsTDU1pbGxpc2tpbHJpa2kxGDAWBgNVBAMTD1RyYXVzdCBhdWRrZW5uaTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMvvxAmAIinI65p0NoayVNyy3WCJ4GISVDP/lqoAyQjFl6A35/+UU3mf67FDBqtFrcA3oSMsGaMtiX6rYo8AqYKssNLvrRzGLrgNjm+bXBCP03gYi64wL1yewUOEvXSF3OcvKzE1kASU0CKIRG3s12qePejXIiSI4SHimwLj0mn8dJ7ZJMgGtxpmZVYydHCaeuodps7pDoSatRfnGMrKz6LUGr8OybRYyRLr0VYPNr6GrEx3i/rg1ko3+M1EOL7dhm0knl2B9zfcscxWmQyVNwB5tR03HO/hfQYCKXk0dCA7W5JPcygD83Df2AJ1hkjwAnT/M4ippw9YnS8GjhjoCTQzKTomcRTQz1fHZjJ7ctd2M0dfKYpsxWNXY4z4hIwXR/fboMdke2uCKsrpaswzMAakOkmbEQp7SFpKsbmOSOtEHBwotAEgW4GgaodwY5j55693YLqzg4rEjzxRJ3PDCTP9BKsaA6iDwwvI9ut1poRGP4q6a2ksWgAyU0zvvPAG9UXNgy8vnTG52HQ04Kxw5RKMarRg5gUJyBXEPLAik/JERuqxFwRJz/uxJcSkSxVo6+YjgypEBHODxMS3D9SG+ZJz6COU1ZTM1vBkA0u15aWWzkMs8Non6+nryUs1IU57Z386D+0fBk3xB1uLHDuD9ZDaHX+lPonnEVn2Cw/RqA5xAgMBAAGjggElMIIBITASBgNVHRMBAf8ECDAGAQH/AgEBMHoGA1UdIARzMHEwbwYJYIJgAQIBAQIBMGIwLQYIKwYBBQUHAgIwIRofSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIFBvbGljeTAxBggrBgEFBQcCARYlaHR0cDovL2NwLmF1ZGtlbm5pLmlzL2F1ZGtlbm5pc3JvdC9jcDAOBgNVHQ8BAf8EBAMCAQYwHwYDVR0jBBgwFoAUao1ujT2L9yZogHUac0qdb7c+UD8wPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NybC5hdWRrZW5uaS5pcy9hdWRrZW5uaXNyb3QvbGF0ZXN0LmNybDAdBgNVHQ4EFgQU20bL/C/sfQLS7xiJ75LmAARd7NwwDQYJKoZIhvcNAQEFBQADggIBAFu4NLX6TvomexvaMtscwU8YaNf5S9WoXHllWhnbYWaCSrrKEpHuBnLWdssTO2/wxxWwxFLOIBDSODzDQDYS7ZmT7JbPPyHnjRb1VyWLGi4w03Ilf5Wp2Q3FGerTveszRffTERIG9crEFO5xWnWaeEPa2+EFPB4EnIBJNkkIodhI8YKD/PnmHQ2xcbIaT9t9grVnzw7XGmj9dzxM23wypP35lUDT6MvJ59gS5xahyy6GK/42IvXD58yfuQkuCeR4QgU0134LOie19jsnkAEYWFaAdK7weEG4SogqI0WdFC3K+Hz4CFIXgscc868IuSEU745PhDqjl+W+Vzf+vfKSQNpD88e/x00Wx6h25gVlrLbAcYwJKO145JgzD2NjbTvtvSttJu9R3nqVGIJ2BPxz0YgC3xHc00A9lPfv3F2nRnrA2RmEbGdx7AsgPcRZhcuMzqOIFs4ziEOfyCc0htmsTOTJW+d9XLYLN3Vy4ioFMQPFuykasGmLfepde/NuiETkZPr3BlMK1G0I6xkqlCIng5MWsp9xfIaiDYAGF6Aa3yv+JRcjuQtNArIbQHTkGuuBNj4ntsL3gPdksBqQqI2yHjcHH0zS9oOUrJIKuTqMxVKt3PHF85yLAqOKQOJGn6fJQiZynhmkG7UasI5ZAEply5ilj+rxPYwQ3YHsxYItYKjD";
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.