AzureAD / microsoft-authentication-extensions-for-dotnet

Secure cross-platform token cache for MSAL public client apps
MIT License
83 stars 32 forks source link

Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine #180

Closed norton287 closed 2 years ago

norton287 commented 2 years ago

Originally opened this on the Developer Community site but Microsoft Identity has passed the buck to YOU! The issue is with Visual Studio MAC (Both Release and Preview) I cannot build a solution if the Azure.Identity nuget is installed. If I remove it then it builds fine.

The Azure.Identity team responded with this:

Thank you for your feedback! This happens because: During the build, we look at all the P/Invokes and figure out which libraries the app needs to link with. The Microsoft.Identity.Client.Extensions.Msal.dll assembly has a P/Invoke to the dlopen function from the library /System/Library/Frameworks/System.framework/System. /System/Library/Frameworks/System.framework/System does not exist on iOS, and thus the native linker complains that it can't link with that library. The Microsoft.Identity.Client.Extensions.Msal.dll assembly comes from this nuget: https://www.nuget.org/packages/Microsoft.Identity.Client.Extensions.Msal/ Looking at their website, the offending code comes from here: https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/blob/c73434602327f5f28322c9be3a9fc217392c93be/src/Shared/Mac/LibSystem.cs#L13-L19 My suggestion would be to file an issue here: https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/new. Happy coding!

<

I'm not exactly sure why they are having me raise the issue since it is their product that is using your product but I am including a simple Visual Studio MAC solution that replicates the problem.

IdentityTestApp.zip

bgavrilMS commented 2 years ago

What is the exact error you are getting? Is it a compilation error? Can you build from the command line?

To me this a tooling error, because all of our code is (logically) like this:


if (IsWindws())
{
   PInvoke_Into_Windows_Api();
}
If (IsMacOs())
{
  PInvoke_Into_Mac_Api();
}
norton287 commented 2 years ago

Here is the last output from the build. I attached a sample that demonstrates this to the first post. I think you'll get better info from it.

Here is the last output from VS 2022 Mac Preview that I get talking about the linker and not finding System framework.

MTOUCH : warning MT5215: References to ‘System’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘System.Net.Security’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘libsecret-1.so’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘kernel32’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘ntdll’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘advapi32’ might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to ‘libsecret-1.so’ might require additional -framework=XXX or -lXXX instructions to the native linker error MT5209 : Native linking error : framework not found System MTOUCH : error MT5202: Native linking failed. Please review the build log. clang : error : linker command failed with exit code 1 (use -v to see invocation) 20 Warning(s) 3 Error(s)

Process exited with code 1, command: error MT5209 : Native linking error : framework not found System

MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'System.Net.Security' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'libsecret-1.so' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'kernel32' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'ntdll' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'advapi32' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : warning MT5215: References to 'libsecret-1.so' might require additional -framework=XXX or -lXXX instructions to the native linker

MTOUCH : error MT5202: Native linking failed. Please review the build log.

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -framework CoreFoundation -framework Security -framework CFNetwork -framework SafariServices -framework QuickLook -framework LocalAuthentication -framework ContactsUI -framework SystemConfiguration -framework Photos -framework OpenGLES -framework MobileCoreServices -framework MessageUI -framework MediaPlayer -framework ImageIO -framework GLKit -framework WebKit -framework Foundation -framework CoreVideo -framework CoreText -framework CoreTelephony -framework CoreSpotlight -framework CoreMedia -framework CoreLocation -framework CoreGraphics -framework QuartzCore -framework Contacts -framework AuthenticationServices -framework UIKit -framework AVKit -framework AVFoundation -framework GSS -weak_framework System /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/registrar.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/main.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/SimpleBlobManager.iOS.exe.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/mscorlib.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.Forms.Core.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Core.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Mono.Security.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Xml.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Numerics.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Data.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Drawing.Common.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Net.Http.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Runtime.Serialization.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.ServiceModel.Internals.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Web.Services.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Xml.Linq.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.Forms.Platform.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.Forms.Platform.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/SimpleBlobManager.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.Forms.Xaml.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Azure.Management.Storage.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Rest.ClientRuntime.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Newtonsoft.Json.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Rest.ClientRuntime.Azure.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Azure.Storage.Blobs.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Azure.Core.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Bcl.AsyncInterfaces.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Text.Json.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Text.Encodings.Web.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Runtime.CompilerServices.Unsafe.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Memory.Data.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Diagnostics.DiagnosticSource.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Azure.Storage.Common.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.IO.Hashing.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Plugin.Fingerprint.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Buttons.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Core.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Licensing.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.Essentials.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/OpenTK-1.0.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfBusyIndicator.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfComboBox.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfListView.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.GridCommon.Portable.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.DataSource.Portable.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.CSharp.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfNumericTextBox.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Azure.Identity.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Identity.Client.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.Identity.Client.Extensions.Msal.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/System.Security.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Azure.Storage.Blobs.Batch.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.IdentityModel.Clients.ActiveDirectory.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Compression.Portable.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.XlsIO.Portable.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Xamarin.CommunityToolkit.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.Analytics.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.iOS.Bindings.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.Analytics.iOS.Bindings.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.Crashes.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Microsoft.AppCenter.Crashes.iOS.Bindings.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfComboBox.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Core.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfBusyIndicator.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfBusyIndicator.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPicker.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPicker.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPicker.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfListView.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Expander.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Expander.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfRangeSlider.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfRangeSlider.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfRangeSlider.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPopupLayout.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPopupLayout.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.Buttons.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfBadgeView.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfBadgeView.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfChart.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfChart.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPullToRefresh.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfPullToRefresh.XForms.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfNumericTextBox.XForms.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/Syncfusion.SfNumericTextBox.iOS.dll.o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/AppCenter.a /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/AppCenterAnalytics.a /Library/Frameworks/Xamarin.iOS.framework/Versions/15.10.0.1/SDKs/MonoTouch.iphoneos.sdk/lib/libmonosgen-2.0.a /Library/Frameworks/Xamarin.iOS.framework/Versions/15.10.0.1/SDKs/MonoTouch.iphoneos.sdk/lib/libxamarin.a /Library/Frameworks/Xamarin.iOS.framework/Versions/15.10.0.1/SDKs/MonoTouch.iphoneos.sdk/lib/libmono-native-unified.a -force_load /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/AppCenterCrashes.a -force_load /Library/Frameworks/Xamarin.iOS.framework/Versions/15.10.0.1/SDKs/MonoTouch.iphoneos.sdk/lib/libapp.a -lsqlite3 -lc++ -Wl,-pie -arch arm64 -miphoneos-version-min=14.3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.5.sdk -lz -liconv -lz -o /Users/jnorton/Documents/GitHub/SimpleBlobManager/SimpleBlobManager/SimpleBlobManager.iOS/obj/iPhone/Release/mtouch-cache/arm64/SimpleBlobManager.iOS -u _xamarin_log -u _xamarin_release_managed_ref -u _xamarin_set_gchandle_with_flags_safe -u _UIApplicationMain -u _xamarin_find_protocol_wrapper_type -u _xamarin_release_block_on_main_thread -u _xamarin_get_block_descriptor -u _xamarin_IntPtr_objc_msgSend_IntPtr_exception -u _xamarin_IntPtr_objc_msgSendSuper_IntPtr_exception ld: framework not found System clang : error : linker command failed with exit code 1 (use -v to see invocation) Done building target “_CompileToNative” in project “SimpleBlobManager.iOS.csproj” – FAILED.

Done building project “SimpleBlobManager.iOS.csproj” – FAILED

bgavrilMS commented 2 years ago

@norton287 - do you get the same when you build via the command line, i.e. dotnet build or msbuild ?

And what is the target framework of your project ?

norton287 commented 2 years ago

same from the command line. it's xamarin.forms so netstandard 2.0

bgavrilMS commented 2 years ago

@SameerK-MSFT - can you please take a look at this? This would block development on MacOS when app is using Azure SDK. The error seems wrong and does not seem to appear on Windows.

@norton287 - we'll need to contact .NET folks / Xamarin folks for this. This works fine on Windows, so this seems to be a bad warning.

norton287 commented 2 years ago

It also works fine on Android as well.

Get the app here:

From: Bogdan Gavril @.**@.) Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) Date: June 6, 2022 at 9:57:00 AM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) CC: John Norton @.**@.), Mention @.**@.) Subject: Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

@SameerK-MSFT(https://github.com/SameerK-MSFT) - can you please take a look at this? This would block development on MacOS when app is using Azure SDK. The error seems wrong and does not seem to appear on Windows.

@norton287(https://github.com/norton287) - we'll need to contact .NET folks / Xamarin folks for this. This works fine on Windows, so this seems to be a bad warning.

— Reply to this email directly, view it on GitHub(https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147541331), or unsubscribe(https://github.com/notifications/unsubscribe-auth/AKBF5PGNKZTSOVGBYHMOMUDVNYGTZANCNFSM5XZ44ZSQ). You are receiving this because you were mentioned.Message ID: @.***>

[ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147541331", "url": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147541331", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

bgavrilMS commented 2 years ago

Was thinking about this some more, here's what I think happens:

NetStandard means the library is compatible with any target framework which uses MSAL, but this is not in fact the case for mobile targets. Microsoft.Identity.Client.Extensions.Msal only works on desktop OS - Windows, Mac, Linux and it defines some encryption at rest functionality. It is in fact not needed on mobile..

I am actually not sure how to mark Microsoft.Identity.Client.Extensions.Msal as "do not use" on mobile targets...

But I'm pretty sure that Azure.Identity is not meant to be used from mobile targets - I doubt that there are docs around it. Identity libraries are very much tied to the OS features, because we need to pop-up webviews and to perform encryption at rest.

My recommendation here to unblock you is for you to use Microsoft.Identity.Client library directly. It's a bit lower level that Azure.Identity, but we do have samples for Xamarin: https://github.com/Azure-Samples/active-directory-xamarin-native-v2

norton287 commented 2 years ago

The reason I am using Azure.Identity is because it was recommended by Azure support for use of either InteractiveBrowserCredential or ClientSecretCredential which are ok for use on mobile since they are considered PERSONAL credentials. I need a credential to authenticate my production app to storage. Have been using a connection string but users seem to have some issue with copy and paste for some reason and it causes issues.

But the Azure Identity guys recommended those two TokenCredential givers to me for use in my Xamarin App.

From: Bogdan Gavril @.**@.) Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) Date: June 6, 2022 at 3:41:49 PM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) CC: John Norton @.**@.), Mention @.**@.) Subject: Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

Was thinking about this some more, here's what I think happens:

AzureIdentity is built for netstandard2.0 AzureIdentity references Microsoft.Identity.Client.Extensions.Msal which is built for netstandrd 2.0 as well

NetStandard means the library is compatible with any target framework which uses MSAL, but this is not in fact the case for mobile targets. Microsoft.Identity.Client.Extensions.Msal only works on desktop OS - Windows, Mac, Linux.

I am actually not sure how to mark Microsoft.Identity.Client.Extensions.Msal as "do not use" on mobile targets...

But I'm pretty sure that Azure.Identity is not meant to be used from mobile targets - I doubt that there are docs around it. Identity libraries are very much tied to the OS features, because we need to pop-up webviews and to perform encryption at rest.

My recommendation here to unblock you is for you to use Microsoft.Identity.Client library directly. It's a bit lower level that Azure.Identity, but we do have samples for Xamarin: https://github.com/Azure-Samples/active-directory-xamarin-native-v2

— Reply to this email directly, view it on GitHub(https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492), or unsubscribe(https://github.com/notifications/unsubscribe-auth/AKBF5PARFGXYIHQVHXPCTBLVNZPA3ANCNFSM5XZ44ZSQ). You are receiving this because you were mentioned.Message ID: @.***>

[ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492", "url": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

bgavrilMS commented 2 years ago
  1. ClientSecretCredential should not be used on a mobile device. You cannot securily store a secret / cert on a mobile device or on a desktop app. ClientSecretCredential is meant for web sites and web APIs, where you can secure the backend. Identity SDK (which Azure.Identity builds on) does not even enable this flow on mobile.

  2. InteractiveBrowserCredential is the recommended path indeed at a logical level, but I am not convinced that Azure.identity was ever tested on mobile and I doubt it works. Microsoft.identity.Client is a lower level SDK, so our API is slightly more complex, but we do have samples for Xamarin: https://github.com/Azure-Samples/active-directory-xamarin-native-v2

As far as I know this is the only SDK for Xamarin mobile apps.

norton287 commented 2 years ago

Well I have been using and testing both the ClientSecretCredential and the InteractiveBrowserCredential on Android and UWP for like a couple of months now. I really want to use InteractiveBrowserCredential since it requires less credentials and secures the app better since it is a storage app. And storage will only take a Credential, so InteractiveBrowserCredential fits the bill perfectly.

So if you can fix the iOS issue I can stop running parallel code In my production app and move everything together again and save the pain of having to maintain a fork just for iOS.

bgavrilMS commented 2 years ago

I'm sorry, I don't know how to fix this, but am happy to be educated. Maybe the issue is on Xamarin SDK or the analyzer which breaks the build? (obviously the same warning should exist on Android, but as you say - it seems to be ok).

norton287 commented 2 years ago

The only one with this issue is iOS and Azure.Identity broke it down to this like I quoted in the first post.

Thank you for your feedback! This happens because: During the build, we look at all the P/Invokes and figure out which libraries the app needs to link with. The Microsoft.Identity.Client.Extensions.Msal.dll assembly has a P/Invoke to the dlopen function from the library /System/Library/Frameworks/System.framework/System. /System/Library/Frameworks/System.framework/System does not exist on iOS, and thus the native linker complains that it can't link with that library. The Microsoft.Identity.Client.Extensions.Msal.dll assembly comes from this nuget: https://www.nuget.org/packages/Microsoft.Identity.Client.Extensions.Msal/ Looking at their website, the offending code comes from here: https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/blob/c73434602327f5f28322c9be3a9fc217392c93be/src/Shared/Mac/LibSystem.cs#L13-L19 My suggestion would be to file an issue here: https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/new. Happy coding!

<

So, I'm not sure the others will even touch it with that in the air.

norton287 commented 2 years ago

Try building my sample solution with your expertise and see where I need to go? I mean you can tell more than I can.

rolfbjarne commented 2 years ago

The fix is simple: change the library name to be /usr/lib/libSystem.dylib instead of /System/Library/Frameworks/System.framework/System (/usr/lib/libSystem.dylib exists on all Apple platforms)

bgavrilMS commented 2 years ago

Thanks for the suggestion @rolfbjarne - the integration tests seem to pass, so I'm happy to take this. We'll probably do a release by end of week / mid next week @norton287

norton287 commented 2 years ago

@rolfbjarne @bgavrilMS Thanks a lot guys really appreciate it very very very very very much!

DRAirey1 commented 2 years ago

I build a Maui app from the template in Visual Studio 2022, ver. 17.3.1. Upgraded to the latest NuGet packages. Installed Microsoft.Identity.Client.Extensions.Msal 2.23.0 and added this code to the OnCounterClicked method of MainPage.xaml.cs:

        var signInApplication = PublicClientApplicationBuilder
            .Create("6a7fefdb-47b3-4a25-87a3-593c12a4115b")
            .WithIosKeychainSecurityGroup("com.microsoft.adalcache")
            .WithRedirectUri("msal6a7fefdb-47b3-4a25-87a3-593c12a4115b://auth")
            .WithB2CAuthority(@"https://thetarexproduction.b2clogin.com/tfp/thetarexproduction.onmicrosoft.com/B2C_1_SignIn")
            .Build();
        var accounts = await signInApplication.GetAccountsAsync("B2C_1_SignIn").ConfigureAwait(false);
        string[] scopes = new string[]
        {
            "https://aspen-asset-management.com/a47aac20-2077-4910-8cb6-b4bf32069c0b/read",
            "https://aspen-asset-management.com/a47aac20-2077-4910-8cb6-b4bf32069c0b/write"
        };
        AuthenticationResult authenticationResult = await signInApplication.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
            .ExecuteAsync(CancellationToken.None)
            .ConfigureAwait(false);
        this.User = authenticationResult.ClaimsPrincipal;

The result is:

clang++ exited with code 1

This means that no one can build a Maui application that uses MSAL.

breenbob commented 2 years ago

We're having same issue with the MSAL sample app for iOS after updating the Nugets to the latest Microsoft.Identity.Client 4.46.2. Also tried installing the transitive dependency for Microsoft.IdentityModel.Abstractions as noticed that was bringing in the min version which was a few off the latest - made no difference. @norton287 can you confirm if the nugets fixed the issue for you? @bgavrilMS Can this issue be reopened, or should we log a new issue?

bgavrilMS commented 2 years ago

@DRAirey1 - can you please open a bug on the MSAL repo for this? @breenbob - I think a new issue should be opened on the MSAL repo - https://github.com/AzureAD/microsoft-authentication-library-for-dotnet

DRAirey1 commented 2 years ago

It looks like someone already fixed this. If you install the pre-release of the MSAL package, the problem goes away:

    <PackageReference Include="Microsoft.Identity.Client" Version="4.46.0-preview2" />
    <PackageReference Include="Microsoft.Identity.Client.Extensions.Msal" Version="2.22.0" />

Just push this into production and it should get rid of the problem.

breenbob commented 2 years ago

@DRAirey1 @bgavrilMS have not tried 4.46.0-preview2 because there are 4 releases since that release all with same or higher version number, so assumed it was an outdated preview. Targeting the very latest 4.46.2 packages does not fix the issue, so I guess whatever fix was implemented has regressed somehow? Will check 4.46.0-preview2 anyway though just to see if it leaves us with a working version, thanks.

DRAirey1 commented 2 years ago

Will check 4.46.0-preview2 anyway though just to see if it leaves us with a working version, thanks.

It allowed me to build a MAUI application and deliver it through the App Store.

MGohil commented 2 years ago

@breenbob @bgavrilMS @DRAirey1

I tried with 3 different versions today and and found that Version 4.46.2 is giving clang++ error in ios while building the app. However, the latest version (4.47.0), recently launched, and 4.46.0-preview2 versions works well in Android and iOS both platforms and gives me the Access Token after B2C login.

image

bgavrilMS commented 2 years ago

Only MSAL 4.47.0 and 4.46.0-preview2 have MAUI support. You can check this on nuget by looking at the Frameworks tab. We will be shipping MAUI support in each version from now on.

DRAirey1 commented 2 years ago

You can check this on nuget by looking at the Frameworks tab

Could you help us out please. It would be useful, in the future, to know what we're getting when we install these packages. How do I determine that this release supports MAUI from this display:

MSAL Support

bgavrilMS commented 2 years ago

@DRAirey1 - MSAL does 3 things which are highly tied to a specific platform:

Each of these have different implementation on Android, iOS, Windows, Mac and Linux.

net6-android / net6-ios / net6-windows are typical for MAUI and MSAL will keep releasing them with each version from now on. Please have a look at the sample for details on how to integrate MSAL - https://github.com/Azure-Samples/active-directory-xamarin-native-v2/tree/main/MAUI

norton287 commented 2 years ago

So when I say I am using InteractiveBrowserCredential on Android and UWP you are saying I’m lying?  Seriously?  I have been a CISSP for 18 years and  I can safely say that ANY mobile device is a 100% more secure than any ZeroDay ridden Windows machine as far as security.  I had over my 15 year career as a penetration tester 100% success accessing servers, desktops, laptops but in the last 6 years phones have been hardened in the corporate sector beyond belief with trip-wire encryption and containerization.

So don’t ever call me a lier when I say I have been running something for quite a while.  Either fix the iOS bug as pointed out by the AZURE IDENTITY team or shut up.

Don’t ever call me a liar ever again.

From: Bogdan Gavril @.> Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.> Date: June 7, 2022 at 9:37:08 AM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.> Cc: John Norton @.>, Mention @.***> Subject:  Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

ClientSecretCredential should not be used on a mobile device. You cannot securily store a secret / cert on a mobile device or on a desktop app. ClientSecretCredential is meant for web sites and web APIs, where you can secure the backend. Our SDK does not even enable this flow on mobile.

InteractiveBrowserCredential is the recommended path indeed at a logical level, but I am not convinced that Azure.identity was ever tested on mobile and I doubt it works. Microsoft.identity.Client is a lower level SDK, so our API is slightly more complex, but we do have samples for Xamarin: https://github.com/Azure-Samples/active-directory-xamarin-native-v2

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.

[ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1148763436", "url": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1148763436", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

norton287 commented 2 years ago

I gave up on it. Identity never incorporated the fix as far as I could tell. Identity has made their dislike of mobile a little to well known for my tastes.

From: Conor Breen @.**@.> Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.> Date: September 16, 2022 at 9:56:25 AM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.> CC: John Norton @.**@.>, Mention @.**@.> Subject: Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

We're having same issue with the MSAL sample app for iOS after updating the Nugets to the latest Microsoft.Identity.Client 4.46.2. Also tried installing the transitive dependency for Microsoft.IdentityModel.Abstractions as noticed that was bringing in the min version which was a few off the latest - made no difference. @norton287https://github.com/norton287 can you confirm if the nugets fixed the issue for you? @bgavrilMShttps://github.com/bgavrilMS Can this issue be reopened, or should we log a new issue?

— Reply to this email directly, view it on GitHubhttps://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1249471983, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKBF5PF2JKUVS23MYHVEGIDV6SDBTANCNFSM5XZ44ZSQ. You are receiving this because you were mentioned.Message ID: @.***>

bgavrilMS commented 2 years ago

I'm sorry if you have a bad experience with the libs or if you feel insulted @norton287 . It was not my intention. Yes you can use InteractiveBrowserCredential on UWP and iOS, I'm just saying that Azure SDK do not test those scenarios afaik

The bug mentioned in this thread has been fixed as per recommendation from Xamarin folks. For any other bugs, please open new issues or comment on existing ones.

norton287 commented 2 years ago

No I was saying at the time I tested several Identity builds after the iOS fix was done and still got the crash from before. I think the never included the fix until later on, but it was frustrating so I gave up. It is just a bad situation, they don’t even have Android set to launch the mobile browser for InteractiveBrowserCredential logins so it is something I really cannot use. But I am glad the iOS fix is in now and working well!

John

From: Bogdan Gavril @.**@.> Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.> Date: October 11, 2022 at 3:18:52 AM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.> Cc: John Norton @.**@.>, Mention @.**@.> Subject: Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

I'm sorry if you have a bad experience with the libs or if you feel insulted @norton287https://github.com/norton287 . It was not my intention. Yes you can use InteractiveBrowserCredential on UWP and iOS, I'm just saying that Azure SDK do not test those scenarios.

The bug mentioned in this thread has been fixed as per recommendation from Xamarin folks. For any other bugs, please open new issues or comment on existing ones.

— Reply to this email directly, view it on GitHubhttps://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1274287246, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKBF5PDWYFXAHZGMGOVVC5TWCUPGNANCNFSM5XZ44ZSQ. You are receiving this because you were mentioned.Message ID: @.***>

norton287 commented 2 years ago

I'm not sure about mobile as it builds fine for Android and UWP. I have been running interactive browser credential on those two with no issues. just iOS has build problems with the identity nuget.

they have pretty much flagged everything that is not mobile friendly with platform not supported messages.

From: Bogdan Gavril @.**@.) Reply: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) Date: June 6, 2022 at 3:41:49 PM To: AzureAD/microsoft-authentication-extensions-for-dotnet @.**@.) CC: John Norton @.**@.), Mention @.**@.) Subject: Re: [AzureAD/microsoft-authentication-extensions-for-dotnet] Cannot build Xamarin.iOS App when Azure.Identity Nugets are installed. If I remove them then it builds and runs fine (Issue #180)

Was thinking about this some more, here's what I think happens:

AzureIdentity is built for netstandard2.0 AzureIdentity references Microsoft.Identity.Client.Extensions.Msal which is built for netstandrd 2.0 as well

NetStandard means the library is compatible with any target framework which uses MSAL, but this is not in fact the case for mobile targets. Microsoft.Identity.Client.Extensions.Msal only works on desktop OS - Windows, Mac, Linux.

I am actually not sure how to mark Microsoft.Identity.Client.Extensions.Msal as "do not use" on mobile targets...

But I'm pretty sure that Azure.Identity is not meant to be used from mobile targets - I doubt that there are docs around it. Identity libraries are very much tied to the OS features, because we need to pop-up webviews and to perform encryption at rest.

My recommendation here to unblock you is for you to use Microsoft.Identity.Client library directly. It's a bit lower level that Azure.Identity, but we do have samples for Xamarin: https://github.com/Azure-Samples/active-directory-xamarin-native-v2

— Reply to this email directly, view it on GitHub(https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492), or unsubscribe(https://github.com/notifications/unsubscribe-auth/AKBF5PARFGXYIHQVHXPCTBLVNZPA3ANCNFSM5XZ44ZSQ). You are receiving this because you were mentioned.Message ID: @.***>

[ { @.": "http://schema.org", @.": "EmailMessage", "potentialAction": { @.": "ViewAction", "target": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492", "url": "https://github.com/AzureAD/microsoft-authentication-extensions-for-dotnet/issues/180#issuecomment-1147904492", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { @.": "Organization", "name": "GitHub", "url": "https://github.com" } } ]