使用Azure AD进行React-Native身份验证

时间:2019-05-26 14:36:26

标签: azure react-native authentication authorization azure-active-directory

我正在以本机方式构建应用程序,并且需要通过Azure AD向服务器进行身份验证。我曾尝试在Google上进行搜索,但令人惊讶的是,与此相关的内容并不多。 我已经找到了这个库“ react-native-azure-ad”,但没有太多关于它的文档。我不明白如何使用它。 我的主要问题是:使用此库时,我需要在哪里放置服务器的URL,以便对其进行身份验证?

谢谢您的建议!

编辑

这是我的代码:

    import { ReactNativeAD, ADLoginView } from 'react-native-azure-ad'

const CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

    class LandingView2 extends React.Component {

        constructor(props) {
            super(props)
            this.AzureADContext = {
                client_id: CLIENT_ID,
                // Optional
                redirect_url: 'http://localhost:8080',
                // Optional
                authority_host: 'xxxx',
                // Optional
                tenant: 'common',
                // Optional
                prompt: 'none',
                // Optional
                login_hint: 'user@domain.com',
                // This is required if client_id is a web application id
                // but not recommended doing this way.
                client_secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
                resources: [
                    'https://graph.microsoft.com',
                    'https://outlook.office365.com',
                    // ... more resources
                ]
            }
        }

        render() {

            new ReactNativeAD({
                client_id: CLIENT_ID,
                resources: [
                    'https://outlook.office365.com'
                ]
            })

            return <ADLoginView
                context={ReactNativeAD.getContext(CLIENT_ID)}
                onSuccess={this.onLoginSuccess.bind(this)} />
        }

        onLoginSuccess(credentials) {
            console.log(credentials['https://outlook.office365.com'].access_token)
            // use the access token ..
        }

    }

1 个答案:

答案 0 :(得分:1)

您需要在AAD中创建两个应用程序。

  • 您的应用程序的本地应用程序
  • 服务器/ API的另一个应用程序

然后,您可以将API的clientId或AppID URI用作问题中显示的代码的“资源”。所有其他参数均从您的客户端应用中获取。

如果一切成功,您将获得一个访问令牌,您可以将其用作调用API时的承载令牌

credentials['https://yourtenant.onmicrosoft.com/yourapiname'].access_token