대화 상자를 사용하지 않고 Azure Active Directory에서 권한을 부여하는 방법은 무엇입니까?

스 미르 노프 드미트리

내 응용 프로그램은 모든 사용자에 대해 내 power bi 계정의 대시 보드를 표시하며 액세스 토큰을 얻기 위해 대화 상자를 통해 Azure Active Directory에 권한을 부여합니다. 인증 대화 상자를 사용하지 않고 내 자격 증명을 하드 코딩하고 액세스 토큰을 얻을 수 있습니다. 암호. 작동하지만 인증 대화 상자를 사용하고 있습니다.

           var @params = new NameValueCollection
        {
            {"response_type", "code"},
            {"client_id", Properties.Settings.Default.ClientID},
            {"resource", "https://analysis.windows.net/powerbi/api"},
            {"redirect_uri", "http://localhost:13526/Redirect"}
        };


        var queryString = HttpUtility.ParseQueryString(string.Empty);
        queryString.Add(@params);

        string authorityUri = "https://login.windows.net/common/oauth2/authorize/";
        var authUri = String.Format("{0}?{1}", authorityUri, queryString);
        Response.Redirect(authUri);


        Redirect.aspx
        string redirectUri = "http://localhost:13526/Redirect";
        string authorityUri = "https://login.windows.net/common/oauth2/authorize/";

        string code = Request.Params.GetValues(0)[0];

        TokenCache TC = new TokenCache();

        AuthenticationContext AC = new AuthenticationContext(authorityUri, TC);
        ClientCredential cc = new ClientCredential
            (Properties.Settings.Default.ClientID,
            Properties.Settings.Default.ClientSecret);

        AuthenticationResult AR = AC.AcquireTokenByAuthorizationCode(code, new Uri(redirectUri), cc);

        Session[_Default.authResultString] = AR;

        Response.Redirect("/Default.aspx");
        Default.aspx
         string responseContent = string.Empty;

        System.Net.WebRequest request = System.Net.WebRequest.Create(String.Format("{0}dashboards", baseUri)) as System.Net.HttpWebRequest;
        request.Method = "GET";
        request.ContentLength = 0;
        request.Headers.Add("Authorization", String.Format("Bearer {0}", authResult.AccessToken));

        using (var response = request.GetResponse() as System.Net.HttpWebResponse)
        {
            using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                responseContent = reader.ReadToEnd();
                PBIDashboards PBIDashboards = JsonConvert.DeserializeObject<PBIDashboards>(responseContent);
            }
        }
6 월

ADAL을 사용하지 않고 한 번했습니다. Power BI의 경우에도 애플리케이션 권한을 제공하지 않고 위임 만 제공합니다.

.NET Core를 사용하여 AAD 토큰 끝점을 호출해야합니다 grant_type=password. 양식 매개 변수에 클라이언트 ID, 클라이언트 시크릿 및 리소스 URI는 물론 사용자 이름과 비밀번호를 지정합니다.

내가 작성한 함수는 다음과 같습니다.

private async Task<string> GetAccessToken()
{
    string tokenEndpointUri = Authority + "oauth2/token";

    var content = new FormUrlEncodedContent(new []
        {
            new KeyValuePair<string, string>("grant_type", "password"),
            new KeyValuePair<string, string>("username", Username),
            new KeyValuePair<string, string>("password", Password),
            new KeyValuePair<string, string>("client_id", ClientId),
            new KeyValuePair<string, string>("client_secret", ClientSecret),
            new KeyValuePair<string, string>("resource", PowerBiResourceUri)
        }
    );

    using (var client = new HttpClient())
    {
        HttpResponseMessage res = await client.PostAsync(tokenEndpointUri, content);

        string json = await res.Content.ReadAsStringAsync();

        AzureAdTokenResponse tokenRes = JsonConvert.DeserializeObject<AzureAdTokenResponse>(json);

        return tokenRes.AccessToken;
    }
}

여기서 권위는 https://login.microsoftonline.com/tenant-id/입니다. 내가 사용하는 응답 클래스는 다음과 같습니다.

class AzureAdTokenResponse
{
    [JsonProperty("access_token")]
    public string AccessToken { get; set; }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스토리지 계정 컨테이너에 대한 Azure Active Directory B2C 사용자 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

사용자 위임 SAS 또는 Azure RBAC를 사용하여 Azure Active Directory B2C 사용자에게 스토리지 계정 컨테이너에 대한 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

MySQL : 사용자가 내가 다른 DB를 가지고있는 것을 보지 않고 하나의 DB에서 하나의 뷰에 대한 선택 액세스 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

Azure AD의 특정 지역에 대한 사용자에 대한 인증 및 권한 부여를 수행하는 방법은 무엇입니까?

분류에서Dev

마우스를 사용하지 않고 대화 상자를 닫기 전에 vscode 저장 변경 사항을 탐색하는 방법은 무엇입니까?

분류에서Dev

서비스 주체에게 Active Directory 그룹에 대한 읽기 액세스 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

ASP.Net (C #)을 사용하여 Azure Active Directory에서 그룹 / 사용자를 만드는 방법은 무엇입니까?

분류에서Dev

새 Azure Active Directory 도메인에 대한 사서함을 가져 오는 방법은 무엇입니까?

분류에서Dev

비교 연산자를 오버로딩하지 않고 std :: max에 대한 사용자 지정 형식을 전문화하는 방법은 무엇입니까?

분류에서Dev

Terraform을 사용하여 azure에 대한 목록 / 개수를 사용하여 고유하고 동일하지 않은 이름으로 동일한 유형의 여러 리소스를 만드는 방법은 무엇입니까?

분류에서Dev

경고 대화 상자에서 사용자 입력을 저장하는 방법은 무엇입니까?

분류에서Dev

Matlab을 사용하여 메뉴에서 대화 상자를 호출하는 방법은 무엇입니까?

분류에서Dev

열린 대화 상자의 이미지를 변경하고 스윙에서 대화 상자를 사용자 정의하는 방법은 무엇입니까?

분류에서Dev

여러 대괄호를 사용하지 않고 문자열을 사용하여 객체 내에서 중첩 값을 얻는 방법은 무엇입니까?

분류에서Dev

치료를 반복하지 않고 R을 사용하여 5 개 블록에서 치료자를 무작위 화하는 방법은 무엇입니까?

분류에서Dev

기본 권한을 반복하지 않고 cmake 대상에 권한을 추가하는 방법은 무엇입니까?

분류에서Dev

chmod를 사용하여 내 그룹의 단일 사용자에게 내 디렉토리에 대한 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

Powershell에서 Azure AAD 앱에 대한 관리자 동의를 부여하는 방법은 무엇입니까?

분류에서Dev

devise를 사용하여 다른 사용자에게 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

boto3를 사용하는 IAM 사용자에게 S3 버킷에 대한 전체 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

Android 용 Xamarin.forms에서 권한 대화 상자의 텍스트를 사용자 지정하는 방법은 무엇입니까?

분류에서Dev

Android 용 Xamarin.forms에서 권한 대화 상자의 텍스트를 사용자 지정하는 방법은 무엇입니까?

분류에서Dev

Active Directory에 직접보고를 표시하지 않고 직접보고자가있는 사람을 찾는 방법은 무엇입니까?

분류에서Dev

내 애플리케이션에 대해 Android 6.0에서 사용자가 위치 권한을 부여했는지 확인하는 방법은 무엇입니까?

분류에서Dev

jQuery를 사용하여 선택 상자에서 선택되지 않은 옵션을 비활성화하는 방법은 무엇입니까?

분류에서Dev

페이지를 나누지 않고 SharePoint 2010에서 간단한 대화 상자를 표시하는 방법은 무엇입니까?

분류에서Dev

사용자 상호 작용없이 Azure Active Directory에 인증하는 방법은 무엇입니까?

분류에서Dev

파일에 대한 권한을 자동으로 부여하는 방법은 무엇입니까?

분류에서Dev

파일에 대한 권한을 자동으로 부여하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    스토리지 계정 컨테이너에 대한 Azure Active Directory B2C 사용자 권한을 부여하는 방법은 무엇입니까?

  2. 2

    사용자 위임 SAS 또는 Azure RBAC를 사용하여 Azure Active Directory B2C 사용자에게 스토리지 계정 컨테이너에 대한 권한을 부여하는 방법은 무엇입니까?

  3. 3

    MySQL : 사용자가 내가 다른 DB를 가지고있는 것을 보지 않고 하나의 DB에서 하나의 뷰에 대한 선택 액세스 권한을 부여하는 방법은 무엇입니까?

  4. 4

    Azure AD의 특정 지역에 대한 사용자에 대한 인증 및 권한 부여를 수행하는 방법은 무엇입니까?

  5. 5

    마우스를 사용하지 않고 대화 상자를 닫기 전에 vscode 저장 변경 사항을 탐색하는 방법은 무엇입니까?

  6. 6

    서비스 주체에게 Active Directory 그룹에 대한 읽기 액세스 권한을 부여하는 방법은 무엇입니까?

  7. 7

    ASP.Net (C #)을 사용하여 Azure Active Directory에서 그룹 / 사용자를 만드는 방법은 무엇입니까?

  8. 8

    새 Azure Active Directory 도메인에 대한 사서함을 가져 오는 방법은 무엇입니까?

  9. 9

    비교 연산자를 오버로딩하지 않고 std :: max에 대한 사용자 지정 형식을 전문화하는 방법은 무엇입니까?

  10. 10

    Terraform을 사용하여 azure에 대한 목록 / 개수를 사용하여 고유하고 동일하지 않은 이름으로 동일한 유형의 여러 리소스를 만드는 방법은 무엇입니까?

  11. 11

    경고 대화 상자에서 사용자 입력을 저장하는 방법은 무엇입니까?

  12. 12

    Matlab을 사용하여 메뉴에서 대화 상자를 호출하는 방법은 무엇입니까?

  13. 13

    열린 대화 상자의 이미지를 변경하고 스윙에서 대화 상자를 사용자 정의하는 방법은 무엇입니까?

  14. 14

    여러 대괄호를 사용하지 않고 문자열을 사용하여 객체 내에서 중첩 값을 얻는 방법은 무엇입니까?

  15. 15

    치료를 반복하지 않고 R을 사용하여 5 개 블록에서 치료자를 무작위 화하는 방법은 무엇입니까?

  16. 16

    기본 권한을 반복하지 않고 cmake 대상에 권한을 추가하는 방법은 무엇입니까?

  17. 17

    chmod를 사용하여 내 그룹의 단일 사용자에게 내 디렉토리에 대한 권한을 부여하는 방법은 무엇입니까?

  18. 18

    Powershell에서 Azure AAD 앱에 대한 관리자 동의를 부여하는 방법은 무엇입니까?

  19. 19

    devise를 사용하여 다른 사용자에게 권한을 부여하는 방법은 무엇입니까?

  20. 20

    boto3를 사용하는 IAM 사용자에게 S3 버킷에 대한 전체 권한을 부여하는 방법은 무엇입니까?

  21. 21

    Android 용 Xamarin.forms에서 권한 대화 상자의 텍스트를 사용자 지정하는 방법은 무엇입니까?

  22. 22

    Android 용 Xamarin.forms에서 권한 대화 상자의 텍스트를 사용자 지정하는 방법은 무엇입니까?

  23. 23

    Active Directory에 직접보고를 표시하지 않고 직접보고자가있는 사람을 찾는 방법은 무엇입니까?

  24. 24

    내 애플리케이션에 대해 Android 6.0에서 사용자가 위치 권한을 부여했는지 확인하는 방법은 무엇입니까?

  25. 25

    jQuery를 사용하여 선택 상자에서 선택되지 않은 옵션을 비활성화하는 방법은 무엇입니까?

  26. 26

    페이지를 나누지 않고 SharePoint 2010에서 간단한 대화 상자를 표시하는 방법은 무엇입니까?

  27. 27

    사용자 상호 작용없이 Azure Active Directory에 인증하는 방법은 무엇입니까?

  28. 28

    파일에 대한 권한을 자동으로 부여하는 방법은 무엇입니까?

  29. 29

    파일에 대한 권한을 자동으로 부여하는 방법은 무엇입니까?

뜨겁다태그

보관