Logi Info DataLayer.REST Многоэтапная обработка безопасности (ошибка 401 при связывании) - PullRequest
0 голосов
/ 07 июня 2019

В настоящее время мы работаем над добавлением CheckBoxAPI в наш веб-сервис, и, похоже, довольно сложно заставить работать многошаговую обработку безопасности.Я следовал указаниям на сайте logi Info, однако мои усилия привели к 401 несанкционированной ошибке.

Я могу отметить две таблицы данных, и они просто выведут два токена аутентификации, но я не могу их правильно передать.Любое руководство будет очень полезно.

'''xml
<?xml version="1.0" encoding="utf-8"?>
<Report
    ID="CheckBox7"
    >
    <LocalData
        ID="cbAuth"
        >
        <DataLayer
            AcceptType="application/json"
            ConnectionID="API_Auth"
            HttpMethod="POST"
            ID="RESTDataLayer1"
            RemoveNamespace="True"
            Type="REST"
            UrlPath="/.../oauth2/token"
            >
            <HttpBody
                ContentType="application/x-www-form-urlencoded"
                >
                <HttpBodyParams
                    grant_type="password"
                    password="passwordGoesHere"
                    username="UsernameGoesHere"
                />
            </HttpBody>
            <Flattener/>
        </DataLayer>
    </LocalData>
    <SetSessionVariables
        ID="auth"
        >
        <SessionParams
            access_token="@Local.access_token~"
        />
    </SetSessionVariables>
    <Body>
            <DataTable
            ID="dtSurveyList"
            SortArrows="True"
            >
            <DataLayer
                ConnectionID="API_Queries"
                HttpMethod="GET"
                ID="RESTDataLayer2"
                Type="REST"
                UrlPath="/v1/.../survey-list?search_text=%7Bstring%7D&amp;folder_id=%7Bint%7D&amp;is_favorite=%7Bbool%7D&amp;page_size=%7Bint%7D&amp;page_num=%7Bint%7D&amp;status=%7Benum%7D&quot; "
                >
                <Remark>
                    <HttpBody
                        ContentType="application/x-www-form-urlencoded"
                        >
                        <HttpBodyParams
                        access_Token="@Session.authorization~"
                        />
                    </HttpBody>
                </Remark>
                <Flattener/>
            </DataLayer>
            <AutoColumns/>
        </DataTable>
        <Label
            Caption="@Local.access_token~"
        />
        <LineBreak/>
        <Label
            Caption="@Session.access_token~"
        />
        </Body>
        <ideTestParams/>
    </Report>

'''

Ожидаемый вывод должен быть таблицей из API, фактический вывод - ошибка 401, я также могу опубликовать трассировку стека, если это поможет.Не очень сильный, когда дело доходит до заголовков, любая помощь будет отличной.

1 Ответ

0 голосов
/ 13 июля 2019

Оказалось, что access_token должен был быть указан с тегом «Носитель», то есть <HttpBodyParams access_Token="@Session.authorization~" /> </HttpBody>

...