{"id":2432,"date":"2026-03-09T07:42:45","date_gmt":"2026-03-09T14:42:45","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/identity\/?p=2432"},"modified":"2026-03-09T21:13:50","modified_gmt":"2026-03-10T04:13:50","slug":"native-auth-mfa-ga","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/identity\/native-auth-mfa-ga\/","title":{"rendered":"General Availability: Email and SMS OTP as Second\u2011Factor MFA for Native Authentication in Entra External ID"},"content":{"rendered":"<p>Today we\u2019re announcing the general availability of Email and SMS one\u2011time passcode (OTP) as second\u2011factor MFA for Native Authentication in Microsoft Entra External ID. This enables developers to add step\u2011up security to native sign\u2011in and sign\u2011up flows while keeping users fully inside their applications.<\/p>\n<p>This release focuses exclusively on MFA as a second factor, evaluated after first\u2011factor authentication completes, and is enforced through Microsoft Entra Conditional Access.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/concept-native-authentication?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Get Started with Native Authentication<\/a><\/div><\/p>\n<h2>Clarifying first factor vs. second factor<\/h2>\n<p>Native Authentication in Entra External ID supports distinct authentication stages, allowing developers to layer security only when needed.<\/p>\n<p>Second\u2011factor MFA is commonly required:<\/p>\n<table>\n<thead>\n<tr>\n<th>Authentication stage<\/th>\n<th>What\u2019s supported<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>First factor<\/td>\n<td>Email OTP; Email + password (with SSPR)<\/td>\n<\/tr>\n<tr>\n<td>Second factor (GA)<\/td>\n<td>Email OTP; SMS OTP<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Second\u2011factor MFA is evaluated only after first\u2011factor authentication succeeds, enabling step\u2011up security without adding friction to every sign\u2011in.<\/p>\n<h2>Why second\u2011factor MFA matters for native apps<\/h2>\n<p>Consumer and external\u2011facing applications increasingly require stronger assurance without sacrificing user experience.<\/p>\n<ul>\n<li>When higher assurance is needed \u2014 such as high\u2011risk sign\u2011ins, sensitive user actions, or regulated scenarios.<\/li>\n<li>Without breaking native UX \u2014 keeping users fully inside the app while security policies are enforced server\u2011side.<\/li>\n<\/ul>\n<p>By supporting Email and SMS OTP as a second factor, Native Authentication enables developers to strengthen account security while maintaining fully branded, native authentication experiences.<\/p>\n<h2>What\u2019s now generally available<\/h2>\n<p>With this GA release, developers can now:<\/p>\n<ul>\n<li>Enforce MFA after first\u2011factor authentication in native sign\u2011in and sign\u2011up flows.<\/li>\n<li>Use Email OTP or SMS OTP as the second authentication factor.<\/li>\n<li>Rely on Conditional Access to control when MFA is required.<\/li>\n<li>Receive ID and access tokens only after MFA succeeds, with no client\u2011side enforcement logic.<\/li>\n<\/ul>\n<p>Native Authentication continues to issue tokens only after all required authentication factors have been successfully completed.<\/p>\n<h2>Ready to get started?<\/h2>\n<p>To begin using second\u2011factor MFA with Native Authentication, configure Conditional Access policies in your Entra External ID tenant and integrate using Native Authentication SDKs or APIs.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/concept-native-authentication-sms-mfa-third-party-fraud-protection?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Secure SMS MFA in native authentication with third\u2011party fraud protection<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/reference-native-authentication-api?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json&amp;tabs=emailOtp\" target=\"_blank\">Native authentication API<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-android-email-one-time-passcode-sign-in?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add email one-time passcode MFA to your Android app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-android-email-strong-authentication-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add email strong authentication method registration to your Android app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-android-sms-one-time-passcode-sign-in?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add SMS one-time passcode MFA to your Android app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-android-sms-strong-authentication-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add SMS strong authentication method registration to your Android app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-ios-swift-email-one-time-passcode-sign-in?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add email one-time passcode MFA to your iOS\/macOS app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-ios-swift-email-strong-authentication-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add Email strong authentication method registration to your iOS\/macOS app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-ios-swift-sms-one-time-passcode-sign-in?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add SMS one-time passcode MFA to your iOS\/macOS app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-ios-swift-sms-strong-authentication-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json\" target=\"_blank\">Tutorial: Add Phone SMS strong authentication method registration to your iOS\/macOS app<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-single-page-app-react-register-strong-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json&amp;tabs=external-tenant\" target=\"_blank\">Tutorial: Register strong authentication method in a React single-page app by using native authentication JavaScript SDK<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-single-page-app-react-enable-mfa?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json&amp;tabs=external-tenant\" target=\"_blank\">Tutorial: Enable multifactor authentication in a React single-page app by using native authentication JavaScript SDK<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-single-page-app-angular-register-strong-method?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json&amp;tabs=external-tenant\" target=\"_blank\">Tutorial: Register strong authentication method in an Angular single-page app by using native authentication JavaScript SDK<\/a><\/div><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/tutorial-native-authentication-single-page-app-angular-enable-mfa?toc=%2Fentra%2Fexternal-id%2Ftoc.json&amp;bc=%2Fentra%2Fexternal-id%2Fbreadcrumb%2Ftoc.json&amp;tabs=external-tenant\" target=\"_blank\">Tutorial: Enable multifactor authentication in an Angular single-page app by using native authentication JavaScript SDK<\/a><\/div><\/p>\n<h2>Stay connected and informed<\/h2>\n<p>To learn more or test out features in the Microsoft Entra suite of products, visit our\u202f<a href=\"https:\/\/developer.microsoft.com\/en-us\/identity\/\">developer center<\/a>. Make sure you subscribe to the\u202f<a href=\"https:\/\/devblogs.microsoft.com\/identity\/\">Identity blog<\/a>\u202ffor more insights and to keep up with the latest on all things Identity. And, follow us on <a href=\"https:\/\/www.youtube.com\/@MicrosoftSecurity\/playlists\">YouTube<\/a> for video overviews, tutorials, and deep dives.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we\u2019re announcing the general availability of Email and SMS one\u2011time passcode (OTP) as second\u2011factor MFA for Native Authentication in Microsoft Entra External ID. This enables developers to add step\u2011up security to native sign\u2011in and sign\u2011up flows while keeping users fully inside their applications. This release focuses exclusively on MFA as a second factor, evaluated [&hellip;]<\/p>\n","protected":false},"author":135210,"featured_media":61,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[33],"tags":[],"class_list":["post-2432","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-updates"],"acf":[],"blog_post_summary":"<p>Today we\u2019re announcing the general availability of Email and SMS one\u2011time passcode (OTP) as second\u2011factor MFA for Native Authentication in Microsoft Entra External ID. This enables developers to add step\u2011up security to native sign\u2011in and sign\u2011up flows while keeping users fully inside their applications. This release focuses exclusively on MFA as a second factor, evaluated [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/posts\/2432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/users\/135210"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/comments?post=2432"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/posts\/2432\/revisions"}],"predecessor-version":[{"id":2461,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/posts\/2432\/revisions\/2461"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/media\/61"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/media?parent=2432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/categories?post=2432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/identity\/wp-json\/wp\/v2\/tags?post=2432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}